プロンプト
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()