【发布时间】:2014-11-27 23:01:13
【问题描述】:
所以,我正在创建一个游戏,当用户的玩家点击一个位置(有很多)时,我希望它结束游戏。
我有两个这样的ArrayLists。
ArrayList<Integer> ex = new ArrayList<Integer>(), ey = new ArrayList<Integer>();
并且“坏”方块(如果用户击中它就会死亡)在他们通电后出现,因此经常添加Integers。
我正在尝试使用for loop 循环遍历大小(如下所示),但这不起作用,因为i 显然只选择最新的。
for(int i = 0; i < ex.size() - 1; i++) {
if(x.get(0)==ex.get(i) && y.get(0) == ey.get(i)){
gameover = true;
}
}
如果我像这样遍历整个arrayList
(int i : ex)
然后它在开始游戏时给我这个(下)错误:
Exception in thread "Animation Thread" java.lang.IndexOutOfBoundsException: Index: 10, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at snakegame.SnakeGame.draw(SnakeGame.java:113)
at processing.core.PApplet.handleDraw(PApplet.java:2386)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Thread.java:745)
那么,有没有办法将 ArrayList 的所有数字存储在一个变量中?
【问题讨论】:
-
您在循环遍历数组列表之前是否测试了它的大小?如果您收到 IndexOutOfBoundsException,则该列表可能为空。试试 System.out.print(ex.size()) ;在 for 循环之前。
-
您应该提供更多详细信息。什么是
x,什么是y?ex和ey存储什么? `for (Object o : ArrayList -
@DavidJones, x & y 存储角色位置,ex 和 ey 存储敌方位置
-
我强烈建议将 x,y 坐标封装在单个类中,例如
Coordinate(x,y)或使用现有的Point,而不是存储两个可能彼此不同步的 ArrayList班级。然后你可以有一个ArrayList<Coordinate>。此外,当循环i < x.size()-1时会错过列表中的最后一项(以防万一) -
啊,是的,这是真的,我很快就会这样做,谢谢!我没有应有的井井有条!
标签: java arrays list arraylist processing