[英]Why wont this work (ArrayList in java)?
我正在嘗試制作蛇游戲,為此,我使用ArrayList來存儲制作蛇的每個單獨的Point對象。 以下代碼創建了蛇:
private void createSnake() {
for (int i = 0; i < maxLenght; i++) {
snakeParts.add(new Point(head.x, head.y + (i * 16)));
}
}
maxLenght默認設置為3,此代碼僅調用一次; 我想要做的是在一列的左上角創建3個Point對象,代表蛇的前三個部分,但是由於某種原因,它要么只在左上角創建一個,要么創建所有三個,但是在同一個位置,我如何使其工作?
注意:我使用的是Timer渲染方法,因此應該每秒發生很多次(?),如果沒有,我可以使用哪種渲染方法?
提前致謝。
編輯:這是蛇類的構造函數
public ArrayList<Point> snakeParts;
public Point head;
public Snake() {
snakeParts = new ArrayList<Point>();
head = new Point(0, 0);
curDir = 1;
createSnake();
}
編輯2:這是渲染類
public class Renderer extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, Core.frame.getWidth(), Core.frame.getHeight());
Snake snake = new Snake();
g.setColor(Color.WHITE);
for (Point point : snake.snakeParts) {
g.fillRect(snake.head.x, snake.head.y, 16, 16);
}
}
您的渲染方法是
for (Point point : snake.snakeParts) {
g.fillRect(snake.head.x, snake.head.y, 16, 16);
}
因此,您要為每個點繪制相同的矩形。
正確的是:
for (Point point : snake.snakeParts) {
g.fillRect(point.x, point.y, 16, 16);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.