我有一个ArrayList:
ArrayList<Body> snakeBody = new ArrayList<Body>();
Body bodyOne = new Body();
bodyOne.setY(10);
bodyTwo.setX(10);
Body bodyTwo = new Body();
bodyTwo.setY(9);
bodyTwo.setX(10);
snakeBody.add(bodyOne);
snakeBody.add(bodyTwo);
好的,没问题。当我移动蛇......她正在向下移动(增加Y)(想象一个网格)。记住,我的蛇有两具尸体。
我知道下一个移动,bodyOne-coorY将是11,bodyTwo-Y将是10。
这是我的问题:我如何交换价值观?我不知道。看这个。
SnakeBody Position Y X
0 10 10
1 9 10
现在,下一步感动。 ÿ++
New value for Y its 11
I want this result , but I can't get it.
Position Y X
0 11 10
1 10 10
我这样做,但没有工作
for ( int i = 0 ; i < snakeBody.size() - 1 ; i++ ){
y = snakeBody.get(i).getPositionY();
x = snakeBody.get(i).getPositionX();
snakeBody.get( i + 1 ).setPositionY(y);
snakeBody.get( i + 1 ).setPositionX(x);
}
最后一个值与前一个值相同。
感谢所有人。
答案 0 :(得分:0)
我不确定我是完全理解你的问题,但是现在就去了。
如果您只是想增加每个身体的Y坐标,请尝试类似
的内容for(int i = 0; i < snakeBody.size() - 1; i++) {
Body currentBody = snakeBody.get(i);
currentBody.setPositionY(currentBody.getPositionY()+1);
snakeBody.set(i, currentBody);
}
如果你试图在snakeBody ArrayList中交换bodyOne和bodyTwo的位置,那么this other question可能有助于他们建议的地方
Collections.swap(snakeBody, 0, 1);