ゼファーネットのロゴ

Python で最初のゲームを作成する: スネーク ゲーム

日付:

Python は楽しくて使いやすいです。幅広いライブラリが利用できるので、 Python ゲームやアプリケーションの作成を簡素化することで、私たちの生活を楽にします。この記事では、私たちの多くが人生のある時点でプレイしたことがあるであろう古典的なゲーム、スネーク ゲームを作成します。これまでにこのゲームを体験したことがない場合は、システムに重いライブラリをインストールすることなく、独自のバージョンを探索して作成するチャンスです。この懐かしいヘビ ゲームの作成を始めるために必要なのは、Python と repl.it などのオンライン コーディング エディターの基本的な理解だけです。

ヘビ ゲームは時代を超えたアーケードの古典で、プレイヤーは食べ物を食べるにつれて体長が伸びるヘビを操作します。この実装では、コードを分解して、ゲームがどのように構造化されているか、またグラフィックスやユーザー インタラクションに Turtle ライブラリがどのように使用されているかを理解しましょう。

目次

シンプルなゲーム開発に Turtle グラフィックを使用する

タートルのグラフィックス Pythonのライブラリ は、図形を作成し、画面に描画し、ユーザー入力に応答するための楽しくインタラクティブな方法を提供します。これは教育目的でよく使用され、視覚的なフィードバックを通じてプログラミングの概念を教えます。このコードは Turtle を利用して、ヘビ、食べ物、スコア表示などのゲーム要素を作成します。

オンラインコーディングエディタ: Repl.it

Repl.it と呼ばれる Web コーディング プラットフォームを使用すると、Web ブラウザ内でコードを直接開発、実行、共同作業できます。さまざまなプログラミング言語をサポートしており、コード共有、バージョン管理、チームワークなどの機能に加えて、コンパイラとインタプリタが組み込まれています。使い方が簡単でセットアップが不要なため、開発者は学習、高速プロトタイピング、コード共有に広く使用しています。

アルゴリズム

Python を使用して最初のゲームの構築を始めましょう。そのためには、以下の特定の手順に従う必要があります。

Replファイルの作成

ステップ1: 必要なライブラリをインストールする

これは、Snake として知られるゲーム開発の最初のステップとなります。タートル、ランダム、タイムなどがあります。

  • カメ: ゲームのグラフィックを作成するには、このライブラリが必要です。画面上の食べ物や蛇の動きを操作して描くことができます。
  • ランダム: 画面上で食べ物のランダムな位置を作成するには、ランダム ライブラリを利用します。これにより、食べ物が食べるたびに、必ず別の場所に表示されます。
  • 時間: タイム ライブラリのおかげで、ヘビは各動きの間にわずかな遅れを持って動きます。これにより、ゲームの操作が簡単になり、プレイヤーにとってより楽しいものになります。
import turtle
import time
import random

Step2: ゲーム環境をセットアップします。

これには、画面の寸法の確立、青色の背景の追加、およびスムーズなゲームプレイを確保するための小さな遅延の追加が含まれます。また、達成した最高スコアを保持する high_score 、プレーヤーのスコアを監視するスコア、ヘビの体を追跡するセグメントなどの変数も設定します。

# Initialize the screen
sc = turtle.Screen()
sc.bgcolor("blue")
sc.setup(height=1000, width=1000)
delay = 0.1

# Initialize variables
segments = []
score = 0
high_score = 0
出力

ステップ 3: ヘビの作成

四角いフォルムの亀のオブジェは蛇を象徴しています。ペンを画面の中央に配置し (goto(0, 100))、その色を黒に設定してから、線の描画を避けるためにペンを上げます。もともと「停止」に設定されていたため、プレイヤーがヘビを動かし始めるまで、ヘビの方向は静止したままになります。

# Create the snake
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 100)
snake.direction = "stop"
ヘビの作成

Step4: 移動機能

その瞬間の方向に応じて、ヘビの移動関数 (move()) を定義します。これらの機能は、ヘビが上下左右に移動する能力を制御します。質問に応じて、彼らはヘビの頭を適切な方向に 20 単位動かします。

# Functions to move the snake
def move():
    if snake.direction == "up":
        y = snake.ycor()
        snake.sety(y + 20)
    if snake.direction == "down":
        y = snake.ycor()
        snake.sety(y - 20)
    if snake.direction == "left":
        x = snake.xcor()
        snake.setx(x - 20)
    if snake.direction == "right":
        x = snake.xcor()
        snake.setx(x + 20)

ステップ5: ヘビを制御する

sc.listen() と sc.onkey() を使用して、スネークを制御するための主要なリスナーを構成します。関連するルーチン (go_up()、go_down()、go_left()、go_right()) は、w、s、a、または d キーボードのキーの押下に応じてヘビの方向を変更します。

# Functions to link with the keys
def go_up():
    snake.direction = "up"

def go_down():
    snake.direction = "down"

def go_left():
    snake.direction = "left"

def go_right():
    snake.direction = "right"

# Listen for key inputs
sc.listen()
sc.onkey(go_up, "w")
sc.onkey(go_down, "s")
sc.onkey(go_left, "a")
sc.onkey(go_right, "d")

Step6: 料理を作る

食べ物は赤い色の円形のカメのオブジェクトで表されます。最初は座標 (100, 100) に配置され、ヘビが食べるターゲットとして機能します。ヘビが食べ物に衝突すると、その食べ物が「食べられ」、ランダムな場所に新しい蛇が現れます。

# Create the food
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.penup()
food.goto(100, 100)

食べ物を作る

Step7: スコアを表示する

タートル オブジェクト (ペン) には、プレイヤーのスコアと達成された最高スコアが表示されます。この情報はヘビが餌を食べるたびに更新されます。

# Create the score display
pen = turtle.Turtle()
pen.penup()
pen.goto(0, 100)
pen.hideturtle()
pen.write("Score: 0  High Score: 0", align="center", font=("Arial", 30, "normal")
スコアの表示

ステップ8: メインゲームループ

スネーク ゲームの中核は、主要なゲーム ループです。ユーザー入力を管理し、画面を更新し、ヘビを動かし、衝突を探し、ゲームのプレイ方法を調整します。メインループの各セクションの特定の機能をさらに詳しく調べてみましょう。

while True:
    sc.update()  # Update the screen
    move()  # Move the snake
    time.sleep(delay)  # Introduce a slight delay for smooth gameplay
  • sc.update() : ゲーム内で行われた変更を反映するために画面を更新します。これがないと画面は更新されず、プレイヤーはヘビの動きやスコアの更新を見ることができません。
  • move(): この機能は、現在の方向に基づいてヘビの動きを制御します。プレイヤーの入力によって指定された方向にヘビの頭を 20 単位移動します。ヘビは、プレイヤーが方向を変えるまで、最後に指示した方向に動き続けます。
  • time.sleep(delay): ヘビの各動きの間にわずかな遅延を導入します。の delay 変数はに設定されています 0.1 コードの先頭に。この遅延の目的は、ゲームの速度を制御することです。これがないと、ヘビの動きが速すぎてプレイヤーが反応できず、ゲームのプレイが困難になってしまいます。

餌を食べてヘビを育てる

    if snake.distance(food) < 20:
        x = random.randint(-200, 200)
        y = random.randint(-200, 200)
        food.penup()
        food.goto(x, y)
        food.pendown()

        # Increase the length of the snake
        new_segment = turtle.Turtle()
        new_segment.shape("square")
        new_segment.color("grey")
        new_segment.penup()
        segments.append(new_segment)
        score += 1

        # Update score and high score
        if score > high_score:
            high_score = score
        pen.clear()
        pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Arial", 30, "normal"))

食べる食品

  • 蛇の頭が(snake) 食品から 20 単位以内の距離に来る (food)、それはヘビが食べ物を「食べた」ことを意味します。
  • 次に、食品の位置が、次のコマンドを使用して画面上の新しいランダムな位置にリセットされます。 random.randint().
  • このアクションにより、食べ物が食べるたびに異なる場所に「再出現」するような錯覚が生じます。

ヘビの体の成長

  • ヘビが餌を食べると、コードはヘビの体に新しい部分を追加して成長させます。
  • 新しいタートル オブジェクト (new_segment) が作成され、 segments リスト。
  • このリストには、ヘビの体を構成するすべての部分が記録されています。
  • プレイヤーのスコアが増加します (score += 1) ヘビが餌を食べるたびに。

スコアの更新

  • 食べ物を食べてスコアを更新すると、スコア表示が更新されます。 pen オブジェクト。
  •   pen.clear() 関数は以前のスコア表示をクリアします。
  • 次に、更新されたスコアとハイスコアが、次を使用して画面に書き込まれます。 pen.write().

ヘビの体を動かす

    for i in range(len(segments) - 1, 0, -1):
        x = segments[i - 1].xcor()
        y = segments[i - 1].ycor()
        segments[i].goto(x, y)

    # Move the first segment to follow the head
    if len(segments) > 0:
        x = snake.xcor()
        y = snake.ycor()
        segments[0].goto(x, y)
  • コードのこのセクションは、ヘビの体を頭に追従させる役割を果たします。
  • を繰り返します。 segments 最後のセグメントから始まるリスト (len(segments) - 1) 2 番目のセグメント (0)、各セグメントをその前のセグメントの位置に移動します。
  • これにより、ヘビの体が頭の動きに追従するエフェクトが作成されます。

最初のセグメント (ヘッド) の更新

  • すべての体のセグメントを移動した後、最初のセグメント (頭) の位置がヘビの現在の位置と一致するように更新されます (snake).
  • これにより、ヘビの頭が動きの際に胴体を導き続けることが保証されます。

エンドノート

このコードは、Turtle グラフィック ライブラリを使用する Snake ゲームの基本構造を提供します。このゲームでは、壁や自分の尻尾との衝突を避けながら、ヘビを制御して餌を食べ、より長く成長することが求められます。これは、ゲーム開発の概念、基本的な Python プログラミング、ユーザー入力とグラフィックスの操作について学習するのに最適な初心者プロジェクトです。このコードを自由にカスタマイズおよび拡張して、衝突検出、難易度の増加、レベルの追加などの機能を追加して、Snake ゲームをさらにエキサイティングなものにしてください。

Python についてさらに詳しく知りたい場合は、こちらに登録してください。 無料のPythonコース.

ここで Python に関連するその他の記事もお読みください。

スポット画像

最新のインテリジェンス

スポット画像