一个java五子棋游戏部分,只有点击下保存棋子,写了点但老提示错误。自己没检查出来错哪了求解!
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.swing.JFrame;
class myframe extends JFrame implements MouseListener{

int Width = Toolkit.getDefaultToolkit().getScreenSize().width;
int Height =Toolkit.getDefaultToolkit().getScreenSize().height;
static int[][] allchess=new int[19][19];
int x=0;
int y=0;
BufferedImage bgimage=null;
public myframe(){
this.setTitle("wuzi");
this.setBounds((Width-500)/2, (Height-500)/2, 500, 500);
this.setVisible(true);
this.setResizable(false);
this.addMouseListener(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
bgimage=ImageIO.read(new File("H:/wiziqi/image/background.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void paint(Graphics g){
g.drawImage(bgimage, 1, 20, this);
g.setFont(new Font("黑体",Font.BOLD,20));
g.drawString("游戏信息", 120, 60);
g.setFont(new Font("宋体",0,12));
g.drawString("黑方时间:无限制", 40, 470);
g.drawString("白方时间:无限制", 260, 470);

//画heng线
for(int i=0;i<19;i++){
g.drawLine(10, 70+i*20,370,70+i*20);
g.drawLine(10+20*i, 70, 10+20*i, 430);
}
//画点
g.fillOval(68, 128, 4, 4);
g.fillOval(308, 128, 4, 4);
g.fillOval(308, 368, 4, 4);
g.fillOval(68, 368, 4, 4);
g.fillOval(308, 248, 4, 4);
g.fillOval(188, 128, 4, 4);
g.fillOval(68, 248, 4, 4);
g.fillOval(188, 368, 4, 4);
g.fillOval(188, 248, 4, 4);



for(int i=0;i<19;i++){
for(int j=0;i<19;j++){
if(allchess[i][j]==1){
int tempx= i*20 + 10;
int tempy= j*20 + 70;
g.fillOval(tempx - 7, tempy - 7, 14, 14);
}
if(allchess[i][j]==2){
//bai zi
int tempx=i*20+10;
int tempy=j*20+70;
g.setColor(Color.WHITE);
g.fillOval(tempx - 7, tempy - 7, 14, 14);
g.setColor(Color.BLACK);
g.drawOval(tempx - 7, tempy - 7, 14, 14);
}
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
x = e.getX();
y = e.getY();
System.out.print("x="+x);
System.out.print(" y="+y);
if(x >= 10 && x <= 370 && y >= 70 && y <= 430){
x= (x-10) / 20;
y= (y-70) / 20;
allchess[x][y]=1;
this.repaint();
}

}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}
public static void main(String args[]){
myframe mychess =new myframe();
System.out.println(allchess[5][5]);
}
}
一个19行19列的棋盘,背景为图片以下为错误提示
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 19
at org.liky.game.frame.myframe.paint(myframe.java:78)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

解决方案 »

  1.   

    at org.liky.game.frame.myframe.paint(myframe.java:78)78 行是哪行?
      

  2.   


    for (int j = 0; i < 19; j++)->
    for (int j = 0; j < 19; j++)
    iiiiiiiiiiiiiiiiiii  ---> jjjjjjjjjjjjjjj
      

  3.   

    78行,for(int j=0;i<19;j++)你这里写错了吧。应该是j<19
      

  4.   

    for(int i=0;i<19;i++){
    for(int j=0;i<19;j++){   === for(int j=0;j<19;j++){
    if(allchess[i][j]==1){ 
    int tempx= i*20 + 10;
    int tempy= j*20 + 70;
    g.fillOval(tempx - 7, tempy - 7, 14, 14);
    }