2

javascript でスネーク ゲームを構築するいくつかの例を見てきましたが、このアルゴリズムでスネークを動かしているようです。

  1. 次のティックになる場所に駒を置きます
  2. 尻尾から最後の部分を取り除きます。

これにより、ヘビが動き回る効果が得られます。ただし、これはヘビが単色の場合にのみ機能します。ヘビの各部分が次のように視覚的に異なるヘビゲームを作成しようとしています:

色とりどりのヘビ

黒い色が頭で、青い色が尻尾だとします。上記のアルゴリズムは、尾を削除すると「パーツ」の順序/色が変更されるため、このヘビでは機能しません。EG: あなたの尻尾はもはや青ではなく、青緑になります。

この蛇の頭が黒く、尾が青のままで、その間のすべての色が同じ順序になるようにするには、どのアルゴリズムを使用すればよいでしょうか?

4

2 に答える 2

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;
      }

});
于 2013-06-03T05:28:46.333 に答える
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])

aと aを取るdraw関数があるとします。pixelcolor

于 2013-06-03T05:39:49.997 に答える