【Python初心者向け】先輩と一緒にゲームを作ろう!【第5回】【ChatGPTさん作成記事】

いよいよPythonの最後のお勉強です。
今回もChatGPTさんに教えてもらったよ。
ちょこちょこ補足していくので、よろしくお願いします。

第5回:当たり判定をつけて障害物をよけるゲームを作ろう!


🐍後輩:「先輩!キャラが動くようになったんですけど、ぶつかる要素がないと物足りないですね…。」

👨‍💻先輩:「よし、じゃあ今日は障害物を追加して、ぶつからないように避けるゲームを作ろう!」


🎯 障害物を追加してみよう!

🐍「まず、障害物ってどうやって作るんですか?」

👨‍💻「キャラクターと同じように、四角いブロックを描画して、それを動かせばいい。」

🐍「なるほど!じゃあ試してみます!」

import pygame
import random

# Pygameを初期化
pygame.init()

# 画面サイズ
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("障害物をよけよう!")

# キャラクター画像を読み込む
character = pygame.image.load("character.png")
character = pygame.transform.scale(character, (50, 50))

# キャラクターの初期位置
x, y = WIDTH // 2, HEIGHT - 100
speed = 5  # 移動速度

# 障害物
obstacle_width = 50
obstacle_height = 50
obstacle_x = random.randint(0, WIDTH - obstacle_width)
obstacle_y = 0
obstacle_speed = 5  # 障害物の落下速度

# ゲームループ
running = True
while running:
    screen.fill((255, 255, 255))  # 背景を白にする

    # 障害物を描画
    pygame.draw.rect(screen, (255, 0, 0), (obstacle_x, obstacle_y, obstacle_width, obstacle_height))

    # キャラクターを描画
    screen.blit(character, (x, y))

    pygame.display.update()  # 画面更新

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # キー入力をチェック
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and x > 0:
        x -= speed
    if keys[pygame.K_RIGHT] and x < WIDTH - 50:
        x += speed

    # 障害物を下に移動
    obstacle_y += obstacle_speed

    # 障害物が画面の下に到達したら再配置
    if obstacle_y > HEIGHT:
        obstacle_y = 0
        obstacle_x = random.randint(0, WIDTH - obstacle_width)

pygame.quit()

🐍「おぉ!赤い障害物が上から落ちてくる!」

👨‍💻「キャラを動かして、ぶつからないようによけてみろ!」

🐍「うわっ!避けられた!」

上の設定だと、障害物のスピードが。。。

2くらいが程々かもね。


💥 当たり判定をつけよう!

🐍「でも、ぶつかっても何も起こらないですね。」

👨‍💻「そうだな。じゃあ、キャラクターと障害物がぶつかったらゲームオーバーにしよう!」

🐍「どうやるんですか?」

👨‍💻「pygame.Rect を使って、キャラクターと障害物の衝突判定をするんだ。」

🐍「やってみます!」

import pygame
import random

# Pygameを初期化
pygame.init()

# 画面サイズ
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("障害物をよけよう!")

# キャラクター画像を読み込む
character = pygame.image.load("character.png")
character = pygame.transform.scale(character, (50, 50))

# キャラクターの初期位置
x, y = WIDTH // 2, HEIGHT - 100
speed = 5  # 移動速度

# 障害物
obstacle_width = 50
obstacle_height = 50
obstacle_x = random.randint(0, WIDTH - obstacle_width)
obstacle_y = 0
obstacle_speed = 5  # 障害物の落下速度

# ゲームループ
running = True
while running:
    screen.fill((255, 255, 255))  # 背景を白にする

    # 障害物を描画
    pygame.draw.rect(screen, (255, 0, 0), (obstacle_x, obstacle_y, obstacle_width, obstacle_height))

    # キャラクターを描画
    screen.blit(character, (x, y))

    pygame.display.update()  # 画面更新

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # キー入力をチェック
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and x > 0:
        x -= speed
    if keys[pygame.K_RIGHT] and x < WIDTH - 50:
        x += speed

    # 障害物を下に移動
    obstacle_y += obstacle_speed

    # 当たり判定
    character_rect = pygame.Rect(x, y, 50, 50)
    obstacle_rect = pygame.Rect(obstacle_x, obstacle_y, obstacle_width, obstacle_height)

    if character_rect.colliderect(obstacle_rect):  # 衝突判定
        print("ゲームオーバー!")
        running = False

    # 障害物が画面の下に到達したら再配置
    if obstacle_y > HEIGHT:
        obstacle_y = 0
        obstacle_x = random.randint(0, WIDTH - obstacle_width)

pygame.quit()

🐍「やった!ぶつかるとゲームオーバーになりました!」

👨‍💻「そうそう。これで単純な障害物回避ゲームが完成だ!」

🐍「すごい…!Pythonでこんなゲームが作れるんですね!」

コードにもコメントあるので、解りやすいかな。

まあ、相変わらずキャラの感度が良すぎるが。。。

🎉 まとめ:Pythonゲーム作りの流れ

🐍「Pythonでゲームを作る流れがわかってきました!」

👨‍💻「いい感じだな! 最後に、今回学んだことをまとめよう。」

🔹 Pythonゲーム開発の流れ

  1. Pygameの基本セットアップ
    • 画面を表示する
    • イベントを処理する(キー入力やウィンドウを閉じる動作)
  2. キャラクターを表示&動かす
    • pygame.image.load() で画像を読み込む
    • pygame.key.get_pressed() でキー入力を取得し、キャラを動かす
  3. 障害物を追加
    • pygame.draw.rect() で四角形を描画
    • random.randint() でランダムな位置から出現させる
  4. 当たり判定をつける
    • pygame.Rect() を使い、colliderect() で衝突判定をする

🐍「Pythonでゲームを作るのって思ったより楽しいですね!」

👨‍💻「Pythonはシンプルなコードでゲームを作れるから、初めてのプログラミングにもぴったりだ。」

🐍「これからもゲーム作りに挑戦したいです!」

👨‍💻「その意気だ! どんどん挑戦して、自分だけのオリジナルゲームを作ってみろ!」

🐍「先輩、ありがとうございました!」

👨‍💻「こちらこそ、一緒に作れて楽しかったぞ!」


🎮 おわりに:次は自分のゲームを作ってみよう!

🐍「よし、次はもっと面白いゲームを作るぞー!」

👨‍💻「応援してるぞ! Pythonゲーム開発、楽しめよ!」

🎉 お疲れさまでした! 🎉

タイトルとURLをコピーしました