軽車両を除く

ちゃんとしない・しっかりしない・きちんとしない

ChatGPTにダメ出しをくり返して,作らせたゲーム

import pygame
import random

# 初期化
pygame.init()

# ゲーム画面の設定
width, height = 800, 600
screen = pygame.display.set_mode*1
pygame.display.set_caption("Galaxian")

# 色の設定
black = (0, 0, 0)
white = (255, 255, 255)
yellow = (255, 255, 0)

# プレイヤーの設定
player_width = 50
player_height = 50
player_x = width // 2 - player_width // 2
player_y = height - 2 * player_height
player_speed = 5

# 敵の設定
enemy_width = 50
enemy_height = 50
enemies =

# 弾の設定
bullet_width = 5
bullet_height = 10
bullet_speed = 7
player_bullets =
enemy_bullets = []

# フォントの設定
font = pygame.font.SysFont(None, 55)

# スコアの初期化
score = 0

# ゲームループ
running = True
clock = pygame.time.Clock()

def create_enemy():
    enemy_x = random.randint(0, width - enemy_width)
    enemy_y = random.randint(-50, -10)
    enemy_speed = random.uniform(1, 3)  # ランダムな速度
    return [enemy_x, enemy_y, enemy_speed]

for i in range(5):
    enemies.append(create_enemy())

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and player_x > 0:
        player_x -= player_speed
    if keys[pygame.K_RIGHT] and player_x < width - player_width:
        player_x += player_speed
    if keys[pygame.K_UP] and player_y > 0:
        player_y -= player_speed
    if keys[pygame.K_DOWN] and player_y < height - player_height:
        player_y += player_speed

    # 弾の発射
    if keys[pygame.K_SPACE]:
        bullet_x = player_x + player_width // 2 - bullet_width // 2
        bullet_y = player_y
        player_bullets.append([bullet_x, bullet_y])

    # 敵の移動
    for enemy in enemies:
        enemy[1] += enemy[2]  # 速度を考慮
        if enemy[1] > height:
            enemies.remove(enemy)
            enemies.append(create_enemy())
            score += 10

        # 敵がランダムで弾を発射
        if random.randint(1, 100) == 1:
            enemy_bullet_x = enemy[0] + enemy_width // 2 - bullet_width // 2
            enemy_bullet_y = enemy[1] + enemy_height
            enemy_bullets.append([enemy_bullet_x, enemy_bullet_y])

    # 弾の移動と当たり判定
    for bullet in player_bullets:
        bullet[1] -= bullet_speed
        if bullet[1] < 0:
            player_bullets.remove(bullet)

        for enemy in enemies:
            if (
                enemy[0] < bullet[0] < enemy[0] + enemy_width
                and enemy[1] < bullet[1] < enemy[1] + enemy_height
            ):
                player_bullets.remove(bullet)
                enemies.remove(enemy)
                score += 100

    # プレイヤーと敵の当たり判定
    for enemy in enemies:
        if (
            player_x < enemy[0] + enemy_width
            and player_x + player_width > enemy[0]
            and player_y < enemy[1] + enemy_height
            and player_y + player_height > enemy[1]
        ):
            running = False

    # 敵の弾の移動と当たり判定
    for bullet in enemy_bullets:
        bullet[1] += bullet_speed
        if bullet[1] > height:
            enemy_bullets.remove(bullet)

        if (
            player_x < bullet[0] < player_x + player_width
            and player_y < bullet[1] < player_y + player_height
        ):
            running = False

    # 描画
    screen.fill(black)

    pygame.draw.rect(screen, white, [player_x, player_y, player_width, player_height])

    for enemy in enemies:
        pygame.draw.rect(screen, yellow, [enemy[0], enemy[1], enemy_width, enemy_height])

    for bullet in player_bullets:
        pygame.draw.rect(screen, white, [bullet[0], bullet[1], bullet_width, bullet_height])

    for bullet in enemy_bullets:
        pygame.draw.rect(screen, yellow, [bullet[0], bullet[1], bullet_width, bullet_height])

    # スコア表示
    score_text = font.render("Score: " + str(score), True, white)
    screen.blit(score_text, [10, 10])

    # ゲーム終了条件の判定
    if not enemies:
        win_text = font.render("YOU WIN!", True, white)
        screen.blit(win_text, [width // 2 - 100, height // 2])
        pygame.display.flip()
        pygame.time.delay(2000)  # 2秒間待機
        running = False
    elif not running:
        game_over_text = font.render("GAME OVER", True, white)
        screen.blit(game_over_text, [width // 2 - 120, height // 2])
        pygame.display.flip()
        pygame.time.delay(2000)  # 2秒間待機

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

*1:width, height