簡體   English   中英

在蛇游戲中,如何移動具有不同碎片的蛇?

[英]In a snake game, how can a move a snake that has distinct pieces?

我看過一些用javascript構建蛇游戲的示例 ,它們似乎使用此算法移動了蛇:

  1. 放置一塊您將要下一個刻度的位置
  2. 從尾巴上取下最后一塊。

這給了蛇四處移動的效果。 但這僅在蛇是一種純色的情況下有效。 我正在嘗試制作一個蛇游戲,其中蛇的每個部分在視覺上都會有所不同,如下所示:

多色蛇

假設黑色是頭部,藍色是尾巴。 上面的算法不適用於這條蛇,因為去掉尾巴會改變“零件”的順序/顏色。 EG:您的尾巴不再是藍色,而是變成藍綠色。

我可以使用哪種算法移動這條蛇,使它的頭部變成黑色,尾巴保持藍色,並且中間的所有顏色也保持相同的順序?

您將使用現有算法,但是要遍歷所有單元格,並用下一個單元格的顏色填充該單元格,以給人蛇在移動的印象。

您可能有一些看起來像這樣的代碼...

if (this.body.length > this.length) {
    var oldPosition = this.body.shift();
    World.setCellAt(oldPosition.x, oldPosition.y, 0);
}

this.body.push({
    x: this.x,
    y: this.y
});

您的循環看起來像...

this.body.forEach(function(piece, index) {
      var nextPiece = this.body[index + 1];

      if (nextPiece) {
           piece.color = nextPiece.color;
      }

});

您仍然可以使用以前的算法,但是將顏色分別存儲到像素中。

假設您有一個列表pixel[0..n]

其中包含x,y坐標。

您可以創建另一個列表color[0..n]

可以說原始算法先添加第一個像素,然后刪除最后一個像素。

您的顯示功能可能看起來像這樣:

for i in 0..n:
    draw(pixel[i], "red")

現在您只需:

for i in 0..n:
    draw(pixel[i], color[i])

假設您有一個draw函數需要一個pixel和一個color

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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