2014-02-18 39 views
0

我想寫一些簡單的蛇遊戲。 爲此,我得到了一個帶有矩形的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

你能發表你已經寫的代碼的相關部分嗎? – mdewitt

+2

在將舊的位置賦予下一個矩形後,頭部改變其位置。其餘的就是這樣。如果你想要可並行化的代碼,你應該爲每個矩形添加一個位置歷史記錄。 –

+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));