Python モジュールを使用したスネーク ゲーム

あなたがヘビのゲームのファンなら、このエッセイがあなたに役立つと確信しています. この記事では、Python 初心者でも簡単に作成できるシンプルなゲームを作成する手順を説明します。. Python の PyGame ライブラリ, これは、ゲームの開発に使用する Python パッケージです。, ゲームをデザインするためのさまざまなアプローチの 1 つです。.

ライブラリ亀を利用することは追加の戦略です. このモジュールのおかげで、ユーザーはオンライン キャンバス上でグラフィックスを生成し、フォームを描画できます。, これはすでに Python とともにインストールされています. そう, このチュートリアルでは, タートル ライブラリを使用して、基本的なスネークを構築します

Python でのスネーク ゲーム

  • 時間モジュール. この手法により、前回から経過した秒数を追跡できます.
  • ヘビゲーム Random モジュール – Pythonで乱数を作成します.

必要なその他のツールには、好みのテキストのエディターが含まれます. この投稿では VSCode を使用します. もちろん, Python をセットアップするために必要です 3 まだインストールしていない場合は、デバイスに. ダウンロードしてGeekflare Compilerをインストールすることもできます. これはとても楽しい経験になるかもしれません!

コンテンツ

ヘビゲームはどのように機能しますか

このゲームで可能な限り最高のスコアを達成するには、プレイヤーはヘビを操作して画面に表示される食べ物を取得する必要があります. プレーヤーは、ヘビが動いている方向を指す 4 つの方向キーのいずれかを押して、ヘビを誘導します。.

ヘビがプレイヤーやオブジェクトに当たると、ヘビはゲームから削除されます. このゲームを進めるために使用する手順.

  • プリインストールされているモジュールをアプリケーションにインポートする (亀の時間, タートルとランダム).
  • ゲームの画面表示は Turtle モジュールで作成されます.
  • キーを設定して、画面上でのヘビの移動方向を制御します.
  • ゲームの実装.

実装プログラムを追加するsnakegame.pyファイルを作成します.

モジュールのインポート

プログラムのこのセクションは、Python でインストールされた時刻を読み込みます, カメ, ランダムモジュール. さらに, プレーヤーの初期スコアのデフォルトの数値, 彼らが到達できる最大スコア, プレーヤーが各動きの間に遅延する時間の長さが定義されます. どれくらい遅れているかを判断するため, 時間モジュールが必要です.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

ゲームの画面を作る

インストールするタートル モジュールを使用すると、ゲームのウィンドウ スクリーンとして機能する仮想スクリーンを作成できます。. 次に、ヘビの体を構築できます, ヘビが食べる食べ物と同様に. 画面には、プレーヤーのトラッカーのスコアも表示されます.

# window screen created
wind = turtle.Screen()
wind.title("Snake Maze")
wind.bgcolor("red")

# The screen size
wind.setup(width=600, height=600)


# creating the snake 
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 0)
snake.direction = "Stop"

# creating the food
snake_food = turtle.Turtle()
shapes = random.choice('triangle','circle')
snake_food.shape(shapes)
snake_food.color("blue")
snake_food.speed(0)
snake_food.penup()
snake_food.goto(0, 100)

pen = turtle.Turtle()
pen.speed(0)
pen.shape('square')
pen.color('white')
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("Your_score: 0 Highest_Score : 0", align="center", 
font=("Arial", 24, "normal"))
turtle.mainloop()

前述の抜粋のコードは、最初のタイトルと背景色を追加する前に、最初にタートル スクリーンを確立します。. デジタル キャンバスにヘビの形をスケッチする前に、まずサイズを選択します。. タートルの移動中に線が引かないようにするには, penup メソッドはタートルのペンを拾います.

後藤テクニックを駆使して, 座標を使用してタートルを正確な位置に向けることができます. ヘビが食べる食べ物は私たちが作ったものです.

蛇がエサを集めるたびに, 各プレイヤーのスコアを表示したい. また、ゲーム中に人が受け取る最高スコアも表示したいと考えています。. このために, 私たちはペンを使います. ペンとして, 書く. 完了する方法を説明する.

ヘビの方向キーの設定

この場合には, 画面上のヘビの動きを制御する特定のキーをプログラムします. 手紙を使おう “L” 左キーとして, “R” 左用, “U” 上向き用, そして “D” 下向き用. これらの指示は、タートルの方向関数を使用してヘビを呼び出すことによって実行されます。.

次のコード例を.

# Assigning directions
def moveleft():
    if snake.direction != "right":
        snake.direction = "left"

def moveright():
    if snake.direction != "left":
        snake.direction = "right"

def moveup():
    if snake.direction != "down":
        snake.direction = "up"

def movedown():
    if snake.direction != "up":
        snake.direction = "down"

def move():
    if snake.direction == "up":
        coord_y = snake.ycor()
        snake.sety(coord_y+20)

    if snake.direction == "down":
        coord_y = snake.ycor()
        snake.sety(coord_y-20)

    if snake.direction == "right":
        coord_x = snake.xcor()
        snake.setx(coord_x+20)

    if snake.direction == "left":
        coord_x = snake.xcor()
        snake.setx(coord_x-20)

wind.listen()
wind.onkeypress(moveleft, 'L')
wind.onkeypress(moveright, 'R')
wind.onkeypress(moveup, 'U')
wind.onkeypress(movedown, 'D')

動く() 上記の関数は、指定された座標内で指定された位置でヘビの移動を可能にします. 聞く() ユーザーがボタンを押すと、ヘビを特定の方向に向けるメソッドを呼び出すイベントリスナーとして機能します.

ヘビの形でのゲームのゲームプレイの実装

基本的な構造が確立された後、ゲームは実写に変換する必要があります. これが含まれるものです:

  • 食べ物を消費するたびにヘビの長さを異なる色で伸ばす.
  • ヘビが食べ物を消費するたびに, プレイヤーのスコアが増加します, 最高得点が追跡されます.
  • ヘビは、壁や自分の体にぶつからないように保護するために保持される場合があります.
  • ヘビを殴った後, ゲームは続く.
  • 画面上ですが, ゲームが再開されたときにプレーヤーのスコアがゼロにリセットされても、プレーヤーの最高スコアです.
segments = []

#Implementing the gameplay
while True:
    wind.update()
    if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 290 or snake.ycor() < -290:
        time.sleep(1)
        snake.goto(0, 0)
        snake.direction = "Stop"
        snake.shape("square")
        snake.color("green")

        for segment in segments:
            segment.goto(1000, 1000)
            segments.clear()
            player_score = 0
            delay_time = 0.1
            pen.clear()
            pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

        if snake.distance(snake_food) < 20:
            coord_x = random.randint(-270, 270)
            coord_y = random.randint(-270, 270)
            snake_food.goto(coord_x, coord_y)

            # Adding segment
            added_segment = turtle.Turtle()
            added_segment.speed(0)
            added_segment.shape("square")
            added_segment.color("white")
            added_segment.penup()
            segments.append(added_segment)
            delay_time -= 0.001
            player_score += 5

            if player_score > highest_score:
                highest_score = player_score
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

    # checking for collisions
    for i in range(len(segments)-1, 0, -1):
        coord_x = segments[i-1].xcor()
        coord_y = segments[i-1].ycor()
        segments[i].goto(coord_x, coord_y)

    if len(segments) > 0:
        coord_x = snake.xcor()
        coord_y = snake.ycor()
        segments[0].goto(coord_x, coord_y)
    move()

    for segment in segments:
        if segment.distance(snake) < 20:
            time.sleep(1)
            snake.goto(0, 0)
            snake.direction = "stop"
            snake.color('white')
            snake.shape('square')

            for segment in segments:
                segment.goto(1000, 1000)
                segment.clear()
                player_score = 0
                delay_time = 0.1
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

     time.sleep(delay_time)

turtle.mainloop()

上記のコード スニペットで使用した, 画面上のヘビの食べ物にランダムな場所を割り当てました. ヘビが栄養を食べるたびに, 体は別の色に成長します, この場合は白, その成長が際立っていることを明確にするため.

ヘビがエサを集めて衝突しないとき, 画面サイズの270度の座標領域内のランダムな位置に食べ物が表示されます. 蛇が餌を食べるたびに, プレイヤーのスコアが 5. ヘビがプレイヤーと衝突した場合, 彼らのスコアはにリセットされます 0 画面は最高スコアを維持します.

結論

タートル ライブラリは、このチュートリアルで見たヘビ ゲームを楽しく簡単に作成する方法です。. Python で PyGame ライブラリを使用して、同じゲームを実装することもできます。. これらを読んで、ゲームを別の方法で利用する方法を見つけてください パイゲーム 手順.

Snake Rivals Fun Snake Game をダウンロード

スネーク ラン レース 3D ランニング ゲーム

Snake.io をダウンロード – 楽しい Snake .io ゲーム