ホームページ > バックエンド開発 > Python チュートリアル > グリッド スナップまたはフリー ポジショニング技術を使用して、ゲームにスネークの体の動きを実装するにはどうすればよいですか?

グリッド スナップまたはフリー ポジショニング技術を使用して、ゲームにスネークの体の動きを実装するにはどうすればよいですか?

DDD
リリース: 2024-12-10 21:23:10
オリジナル
655 人が閲覧しました

How Do I Implement Snake Body Movement in a Game Using Grid-Snapped or Free Positioning Techniques?

ヘビの体の動きを連鎖させる

ヘビ ゲームでは、ヘビの体のセグメントは頭のパスに従う必要があります。この動きを実装するには、主に 2 つのアプローチがあります。

グリッドにスナップされたヘビ:

  1. 体のセグメントの位置を表すタプルのリストを維持します。グリッド。
  2. ヘビが移動したら、新しい頭の位置をリストの先頭に追加し、尾を削除します。 (最後の項目)。

自由な位置決めを持つヘビ:

  1. 移動に応じてヘビの頭の位置を追跡します。
  2. 計算最後の身体セグメントとその位置の間のユークリッド距離
  3. 十分な距離のある位置が見つかったら、それを新しいセグメントとしてボディ リストに追加します。

動作の実装:

次の Python コードは、これらのアプローチをスネークに組み込んでいます。ゲーム:

グリッドスナップされたスネーク:

snake_x, snake_y = WIDTH//2, HEIGHT//2
body = []
move_x, move_y = (1, 0)
food_x, food_y = new_food(body)

run = True
while run:
    # [...]
    body.insert(0, (snake_x, snake_y))
    snake_x = (snake_x + move_x) % WIDTH
    snake_y = (snake_y + move_y) % HEIGHT
    if body[0] == food_x and body[1] == food_y:
        food_x, food_y = new_food(body)
        body.append((snake_x, snake_y))
    # [...]
ログイン後にコピー

自由配置ヘビ:

snake_x, snake_y = WIDTH//2, HEIGHT//2
track = [(WIDTH//2, HEIGHT//2)]
body = []
move_x, move_y = (1, 0)
food_x, food_y = new_food(track)

run = True
while run:
    # [...]
    track.insert(0, (snake_x, snake_y))
    snake_x = (snake_x + move_x) % WIDTH
    snake_y = (snake_y + move_y) % HEIGHT
    body = create_body(track, length, distance)
    # [...]
ログイン後にコピー

結論:

希望するゲーム スタイルに応じて、ヘビの体のセグメントを接続するための適切なアプローチを選択できます。提供されている Python コードは、両方の実装を示しています。

以上がグリッド スナップまたはフリー ポジショニング技術を使用して、ゲームにスネークの体の動きを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート