编写一个完整的贪吃蛇游戏是一个相对复杂的任务,涉及多个方面,如游戏循环、用户输入、图形渲染等。在Python中,我们通常使用pygame库来创建这样的游戏。以下是一个简化版的贪吃蛇游戏代码,使用了pygame库。
确保你已经安装了pygame库。如果没有,你可以通过pip安装,在命令行或终端中执行以下命令:
pip install pygame
然后可以使用以下代码创建贪吃蛇游戏:
import pygame
import sys
import random
# 初始化pygame
pygame.init()
# 设置屏幕大小
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置颜色
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 设置贪吃蛇的初始位置和大小
snake = [(100, 50), (90, 50), (80, 50)]
snake_direction = "RIGHT"
# 设置食物的位置
food = (random.randint(10, (screen_width // 10) - 1) * 10, random.randint(10, (screen_height // 10) - 1) * 10)
# 游戏主循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and snake_direction != "DOWN":
snake_direction = "UP"
elif event.key == pygame.K_DOWN and snake_direction != "UP":
snake_direction = "DOWN"
elif event.key == pygame.K_LEFT and snake_direction != "RIGHT":
snake_direction = "LEFT"
elif event.key == pygame.K_RIGHT and snake_direction != "LEFT":
snake_direction = "RIGHT"
# 移动贪吃蛇
new_head = list(snake[0])
if snake_direction == "UP":
new_head[1] -= 10
elif snake_direction == "DOWN":
new_head[1] += 10
elif snake_direction == "LEFT":
new_head[0] -= 10
elif snake_direction == "RIGHT":
new_head[0] += 10
snake.insert(0, new_head)
# 检查是否吃到食物
if snake[0] == food:
food = (random.randint(10, (screen_width // 10) - 1) * 10, random.randint(10, (screen_height // 10) - 1) * 10)
else:
tail = snake.pop()
# 检查是否撞到墙或自己
if new_head[0] < 0 or new_head[0] >= screen_width or new_head[1] < 0 or new_head[1] >= screen_height:
break
for body_part in snake[1:]:
if body_part == new_head:
break
# 绘制屏幕
screen.fill(WHITE)
pygame.draw.rect(screen, GREEN, (food[0], food[1], 10, 10))
for pos in snake:
pygame.draw.rect(screen, RED, (pos[0], pos[1], 10, 10))
pygame.display.flip()
# 控制游戏速度
pygame.time.Clock().tick(10)
print("Game Over!")
这段代码创建了一个简单的贪吃蛇游戏。你可以使用箭头键来控制蛇的方向,并尝试吃到屏幕上的食物。当蛇撞到墙或自己的身体时,游戏结束。这是一个非常基础的版本,还有很多可以改进和添加的地方,比如添加分数、更复杂的图形、音效等。