import pygame
import sys
import random
# 初始化pygame
pygame.init()
# 设置窗口大小
screen_width = 600
screen_height = 480
# 创建窗口
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置窗口标题
pygame.display.set_caption('贪吃蛇游戏')
# 定义颜色变量
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
# 定义蛇的节点类
class Snake:
def __init__(self):
self.body = []
self.direction = 'right'
self.length = 3
self.score = 0
def move(self):
# 创建新的头部坐标
new_head = (self.body[0][0], self.body[0][1])
if self.direction == 'right':
new_head[0] += 20
elif self.direction == 'left':
new_head[0] -= 20
elif self.direction == 'up':
new_head[1] -= 20
elif self.direction == 'down':
new_head[1] += 20
self.body.insert(0, new_head)
def draw(self):
for point in self.body:
pygame.draw.rect(screen, white, [point[0], point[1], 20, 20])
pygame.draw.rect(screen, black, [point[0] + 2, point[1] + 2, 16, 16])
# 定义食物类
class Food:
def __init__(self):
self.x = random.randint(20, screen_width - 20)
self.y = random.randint(20, screen_height - 20)
self.x = self.x - (self.x % 20)
self.y = self.y - (self.y % 20)
def draw(self):
pygame.draw.rect(screen, red, [self.x, self.y, 20, 20])
# 实例化蛇和食物
snake = Snake()
food = Food()
# 游戏循环标志
running = True
# 游戏主循环
while running:
# 设置背景颜色
screen.fill(black)
# 检查事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT or event.key == ord('d'):
snake.direction = 'right'
elif event.key == pygame.K_LEFT or event.key == ord('a'):
snake.direction = 'left'
elif event.key == pygame.K_UP or event.key == ord('w'):
snake.direction = 'up'
elif event.key == pygame.K_DOWN or event.key == ord('s'):
snake.di
评论已关闭