簡體   English   中英

為什么不做這項工作(Java中的ArrayList)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM