pythonでスネークゲームを作成


2023/06/09
2023/06/09
このコンテンツはCHATGPT等の生成AIによって作られた文章を含むため、情報の正確性・信頼性等を保証できません。ご承知の上でお楽しみください。

リンク

プロンプト

pythonでスネークゲームを作成してください。

もちろんです!以下にPythonでスネークゲームを作成するための基本的なコードを示します。
import pygame
import time
import random

# プレイ画面のサイズ
width = 800
height = 600

# 色の定義
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)

# Snakeクラスの定義
class Snake:
    def __init__(self):
        self.size = 10
        self.x = width / 2
        self.y = height / 2
        self.x_change = 0
        self.y_change = 0
        self.body = []
        self.length = 1

    def draw(self, game_display):
        for part in self.body:
            pygame.draw.rect(game_display, black, [part[0], part[1], self.size, self.size])

    def move(self):
        self.x += self.x_change
        self.y += self.y_change

    def is_collision(self, x, y):
        if x >= width or x < 0 or y >= height or y < 0:
            return True
        for part in self.body[1:]:
            if x == part[0] and y == part[1]:
                return True
        return False

# Gameクラスの定義
class Game:
    def __init__(self):
        pygame.init()
        pygame.display.set_caption("Snake Game")
        self.game_display = pygame.display.set_mode((width, height))
        self.fps = pygame.time.Clock()
        self.snake = Snake()
        self.apple_x = round(random.randrange(0, width - self.snake.size) / 10.0) * 10.0
        self.apple_y = round(random.randrange(0, height - self.snake.size) / 10.0) * 10.0

    def run(self):
        game_over = False
        while not game_over:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    game_over = True
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_LEFT:
                        self.snake.x_change = -self.snake.size
                        self.snake.y_change = 0
                    elif event.key == pygame.K_RIGHT:
                        self.snake.x_change = self.snake.size
                        self.snake.y_change = 0
                    elif event.key == pygame.K_UP:
                        self.snake.y_change = -self.snake.size
                        self.snake.x_change = 0
                    elif event.key == pygame.K_DOWN:
                        self.snake.y_change = self.snake.size
                        self.snake.x_change = 0

            self.snake.move()

            if self.snake.is_collision(self.snake.x, self.snake.y):
                game_over = True

            self.game_display.fill(white)
            pygame.draw.rect(self.game_display, red, [self.apple_x, self.apple_y, self.snake.size, self.snake.size])

            self.snake.body.append([self.snake.x, self.snake.y])
            if len(self.snake.body) > self.snake.length:
                del self.snake.body[0]

            for part in self.snake.body[:-1]:
                if part == [self.snake.x, self.snake.y]:
                    game_over = True

            self.snake.draw(self.game_display)

            pygame.display.update()
            self.fps.tick(30)

            if self.snake.x == self.apple_x and self.snake.y == self.apple_y:
                self.snake.length += 1
                self.apple_x = round(random.randrange(0, width - self.snake.size) / 10.0) * 10.0
                self.apple_y = round(random.randrange(0, height - self.snake.size) / 10.0) * 10.0

        pygame.quit()


# ゲームの実行
game = Game()
game.run()

このコードを実行すると、Pygameを使用してスネークゲームが表示されます。プレイヤーは矢印キーを使用してスネークを操作し、赤いりんごを取ることでスコアが上がります。スネークが壁や自分自身に衝突するとゲームオーバーになります。 このコードは基本的なスネークゲームの実装例ですので、必要に応じて改良や追加の機能を行うことができます。
プロンプトシェア

クリエイター フォローする

zan zan

タイプ

カテゴリー

キーワード