import pygame
import random
# 定义窗口尺寸
WINDOW_WIDTH = 600
WINDOW_HEIGHT = 600
# 定义方格尺寸
CELL_SIZE = 20
# 初始化pygame
pygame.init()
# 创建窗口
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
# 设置窗口标题
pygame.display.set_caption('Greedy Snake')
# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 定义字体
font = pygame.font.SysFont(None, 30)
# 定义蛇的方向
UP = 1
DOWN = 2
LEFT = 3
RIGHT = 4
# 定义蛇的初始位置和长度
snake_x = [100, 80, 60]
snake_y = [100, 100, 100]
snake_direction = RIGHT
# 定义食物的位置
food_x = random.randint(0, (WINDOW_WIDTH - CELL_SIZE) // CELL_SIZE) * CELL_SIZE
food_y = random.randint(0, (WINDOW_HEIGHT - CELL_SIZE) // CELL_SIZE) * CELL_SIZE
# 定义分数
score = 0
# 游戏主循环
while True:
# 处理游戏退出事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# 处理键盘事件
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and snake_direction != DOWN:
snake_direction = UP
elif keys[pygame.K_DOWN] and snake_direction != UP:
snake_direction = DOWN
elif keys[pygame.K_LEFT] and snake_direction != RIGHT:
snake_direction = LEFT
elif keys[pygame.K_RIGHT] and snake_direction != LEFT:
snake_direction = RIGHT
# 移动蛇的位置
if snake_direction == UP:
snake_y.insert(0, snake_y[0] - CELL_SIZE)
snake_x.insert(0, snake_x[0])
elif snake_direction == DOWN:
snake_y.insert(0, snake_y[0] + CELL_SIZE)
snake_x.insert(0, snake_x[0])
elif snake_direction == LEFT:
snake_x.insert(0, snake_x[0] - CELL_SIZE)
snake_y.insert(0, snake_y[0])
elif snake_direction == RIGHT:
snake_x.insert(0, snake_x[0] + CELL_SIZE)
snake_y.insert(0, snake_y[0])
# 判断蛇是否碰到边界
if snake_x[0] < 0 or snake_x[0] >= WINDOW_WIDTH or snake_y[0] < 0 or snake_y[0] >= WINDOW_HEIGHT:
pygame.quit()
exit()
# 判断蛇是否碰到自身
if (snake_x[0], snake_y[0]) in zip(snake_x[1:], snake_y[1:]):
pygame.quit()
exit()
# 判断蛇是否吃到食物
if snake_x[0] == food_x and snake_y[0] == food_y:
food_x = random.randint(0, (WINDOW_WIDTH - CELL_SIZE) // CELL_SIZE) * CELL_SIZE
food_y = random.randint(0, (WINDOW_HEIGHT - CELL_SIZE) // CELL_SIZE) * CELL_SIZE
score += 1
else:
snake_x.pop()
snake_y.pop()
# 绘制游戏界面
screen.fill(WHITE)
pygame.draw.rect(screen, GREEN, (food_x, food_y, CELL_SIZE, CELL_SIZE))
for i in range(len(snake_x)):
pygame.draw.rect(screen, BLACK, (snake_x[i], snake_y[i], CELL_SIZE, CELL_SIZE))
score_text = font.render('Score: ' + str(score), True, RED)
screen.blit(score_text, (10, 10))
pygame.display.update()
# 控制游戏帧率
pygame.time.Clock().tick(10)
用Python做一个贪吃蛇小游戏
于 2023-05-23 19:44:59 首次发布
这是一个使用Python的pygame库编写的贪吃蛇游戏。游戏设置了窗口大小、方格尺寸,并初始化了pygame环境。蛇的移动方向、位置和长度被定义,同时有食物生成和分数计算功能。游戏通过事件处理来响应用户输入,检测蛇是否碰到边界或自身,以及是否吃到食物。
摘要由CSDN通过智能技术生成