我正在尝试写一些简单的蛇游戏。 为此,我有一个带有矩形的ArrayList。 改变方向已经有效了。
但是现在,当我添加更多矩形(蛇身部位)时,我怎样才能实现它们跟随“头部”?
我不能改变整个ArrayList的方向,这会导致一些长块向上或向下移动。它的身体应该跟随头部的运动,走在头后。
我怎样才能做到这一点?
这是我没有完全无用的蛇更新方法...
ArrayList<Rectangle> rects;
public void update() {
if(isMoving && System.currentTimeMillis() - moveTimer > moveSpeed) {
rects.get(0).setLocation((int)(rects.get(0).getX()+dx*Core.GRID_SIZE), (int)(rects.get(0).getY()+dy*Core.GRID_SIZE));
for(int i = 0; i < rects.size()-1; i++) {
if(rects.get(i).getX() < rects.get(i+1).getX()) {
rects.get(i).setLocation((int)(rects.get(0).getX()+Core.GRID_SIZE), (int)(rects.get(i).getY()));
}
}
moveTimer = System.currentTimeMillis();
}
答案 0 :(得分:0)
这就是我解决它的方法:首先是最后一个从最后一个获得坐标,依此类推......直到计数器达到0.第一个“头”跟随用户输入。
感谢您的贡献!
for(int i = rects.size()-1; i > 0; i--) {
rects.get(i).setLocation((int)(rects.get(i-1).getX()), (int)(rects.get(i-1).getY()));
}
rects.get(0).setLocation((int)(rects.get(0).getX()+dx*Core.GRID_SIZE), (int)(rects.get(0).getY()+dy*Core.GRID_SIZE));