[英]In a snake game, how can a move a snake that has distinct pieces?
我看過一些用javascript構建蛇游戲的示例 ,它們似乎使用此算法移動了蛇:
這給了蛇四處移動的效果。 但這僅在蛇是一種純色的情況下有效。 我正在嘗試制作一個蛇游戲,其中蛇的每個部分在視覺上都會有所不同,如下所示:
假設黑色是頭部,藍色是尾巴。 上面的算法不適用於這條蛇,因為去掉尾巴會改變“零件”的順序/顏色。 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.