Java 贪吃蛇游戏中的 ArrayIndexOutOfBoundException 错误
Java ArrayIndexOutOfBoundException error in snake game
我正在尝试制作贪吃蛇游戏。我快完成了。问题是有时候蛇吃敌人物体的时候会弹出这个错误--->
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 33
er.java:814)
这是敌人的定位单元--->
private int[] enemyYpos = {25,50,75,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,550,575,600,625,650,675,700,725,750,775,800,825,850};
private int[] enemyXpos = {100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,550,575,600,625};
这是随机数--->
private int xpos = r.nextInt(34);
private int ypos = r.nextInt(20);
现在我使用这些来绘制敌人,方法是使用其中定义了敌人位置的 for 循环 -->
enemy = new ImageIcon("E:\Netbeans\old files\Game\src\game\bug.png");
if((enemyXpos[xpos] == snakeXlength[0] && enemyYpos[ypos] == snakeYlength[0])){
lengthsnake++;
xpos = r.nextInt(34);
ypos = r.nextInt(20);
}
enemy.paintIcon(this, g, enemyXpos[xpos], enemyYpos[ypos]); //The Exception error shows that the mistake is in this line
我希望这些信息足够了。提前致谢! :)
您的问题是您混淆了 X 和 Y。应该是
xpos = r.nextInt(20);
ypos = r.nextInt(34);
而不是相反。
我认为您交换了 x
个元素的数量和 y
个元素的数量。最简单的修复。更改您的生成器以使用数组的长度而不是幻数。
private int xpos = r.nextInt(enemyXpos.length);
private int ypos = r.nextInt(enemyYpos.length);
和
xpos = r.nextInt(enemyXpos.length);
ypos = r.nextInt(enemyYpos.length);
我正在尝试制作贪吃蛇游戏。我快完成了。问题是有时候蛇吃敌人物体的时候会弹出这个错误--->
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 33
er.java:814)
这是敌人的定位单元--->
private int[] enemyYpos = {25,50,75,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,550,575,600,625,650,675,700,725,750,775,800,825,850};
private int[] enemyXpos = {100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,550,575,600,625};
这是随机数--->
private int xpos = r.nextInt(34);
private int ypos = r.nextInt(20);
现在我使用这些来绘制敌人,方法是使用其中定义了敌人位置的 for 循环 -->
enemy = new ImageIcon("E:\Netbeans\old files\Game\src\game\bug.png");
if((enemyXpos[xpos] == snakeXlength[0] && enemyYpos[ypos] == snakeYlength[0])){
lengthsnake++;
xpos = r.nextInt(34);
ypos = r.nextInt(20);
}
enemy.paintIcon(this, g, enemyXpos[xpos], enemyYpos[ypos]); //The Exception error shows that the mistake is in this line
我希望这些信息足够了。提前致谢! :)
您的问题是您混淆了 X 和 Y。应该是
xpos = r.nextInt(20);
ypos = r.nextInt(34);
而不是相反。
我认为您交换了 x
个元素的数量和 y
个元素的数量。最简单的修复。更改您的生成器以使用数组的长度而不是幻数。
private int xpos = r.nextInt(enemyXpos.length);
private int ypos = r.nextInt(enemyYpos.length);
和
xpos = r.nextInt(enemyXpos.length);
ypos = r.nextInt(enemyYpos.length);