我看过一些用javascript构建蛇游戏的examples,他们似乎用这个算法移动蛇:
这可以让蛇在四处移动。但这只有在蛇是一种纯色时才有效。我正在尝试制作一个蛇游戏,其中蛇的每个部分都会在视觉上不同:
假装黑色是头部,蓝色是尾部。上述算法不适用于此蛇,因为删除尾部会改变“部件”的顺序/颜色。 EG:你的尾巴不再是蓝色,它会变成青色。
我可以使用什么算法来移动这条蛇,使其头部呈黑色,尾部保持蓝色,中间的所有颜色也保持相同的顺序?
答案 0 :(得分:2)
您将使用现有算法,但迭代所有单元格,使用下一个单元格的颜色填充单元格,以给出蛇移动的印象。
你可能有一些看起来像这样的代码......
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;
}
});
答案 1 :(得分:2)
您仍然可以使用之前的算法,但会将颜色分别存储到像素中。
假设您有一个列表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
。