
简单代码搞定:Python版贪吃蛇游戏编程实战
简单代码编程:贪吃蛇
贪吃蛇是一款经典的单机游戏,其玩法简单但充满乐趣。它通过对蛇的移动控制,使其吃到“食物”,从而增长身体,若碰到边界或自身则游戏结束。这篇文章将带领大家使用 Python 语言和 pygame
图形库来实现一个简单的贪吃蛇游戏。

一、环境和库的准备
首先,我们需要确保系统已安装 Python。可以在Python 官网 下载并安装适合操作系统的版本。接着,使用 pip
包管理工具安装 pygame
库。打开终端或命令提示符,输入以下命令:

pip install pygame
安装完成后,便可以开始编写贪吃蛇游戏代码。

二、游戏核心思路
- 初始化窗口:创建一个用于显示游戏画面的窗口,设置其大小。
- 定义蛇的属性和行为:蛇由一系列的方块或像素组成,需要记录蛇的位置以及移动方向。初始时,蛇的长度为一个方块,且处在一个固定的位置。
- 生成食物:在游戏窗口内的随机位置生成食物,确保食物位置不与蛇身重叠。
- 游戏逻辑处理:每一帧更新蛇的位置,根据蛇的移动方向改变其头部坐标,并移除蛇尾方块,模拟蛇的移动效果。当蛇吃到食物时,增加蛇的长度,同时生成新的食物。如果蛇碰到边界或者自身的身体,游戏结束。
- 绘制游戏画面:将蛇和食物绘制在游戏窗口中,根据游戏状态(进行中或结束)显示相应的信息。
三、具体代码实现
以下是贪吃蛇游戏的完整代码:
import pygame
import random
# 初始化 Pygame
pygame.init()
# 定义窗口大小
WIDTH, HEIGHT = 400, 300
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('贪吃蛇')
# 定义颜色
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLACK = (0, 0, 0)
# 蛇的大小和初始位置
snake_size = 10
snake_body = [(WIDTH // 2, HEIGHT // 2)]
snake_direction = [0, 0]
# 食物位置
food_pos = (random.randint(0, (WIDTH - snake_size) // snake_size) * snake_size,
random.randint(0, (HEIGHT - snake_size) // snake_size) * snake_size)
# 游戏时钟,控制帧率
clock = pygame.time.Clock()
# 游戏是否结束
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_UP and snake_direction != [0, snake_size]:
snake_direction = [0, -snake_size]
elif event.key == pygame.K_DOWN and snake_direction != [0, -snake_size]:
snake_direction = [0, snake_size]
elif event.key == pygame.K_LEFT and snake_direction != [snake_size, 0]:
snake_direction = [-snake_size, 0]
elif event.key == pygame.K_RIGHT and snake_direction != [-snake_size, 0]:
snake_direction = [snake_size, 0]
if not game_over:
# 更新蛇的位置
head_x, head_y = snake_body[0]
new_head = (head_x + snake_direction[0], head_y + snake_direction[1])
# 检测碰撞
if (new_head in snake_body or
new_head[0] < 0 or new_head[0] >= WIDTH or
new_head[1] < 0 or new_head[1] >= HEIGHT):
game_over = True
else:
snake_body.insert(0, new_head)
# 判断是否吃到食物
if new_head == food_pos:
food_pos = (random.randint(0, (WIDTH - snake_size) // snake_size) * snake_size,
random.randint(0, (HEIGHT - snake_size) // snake_size) * snake_size)
else:
snake_body.pop()
# 清空屏幕
screen.fill(BLACK)
# 绘制食物
pygame.draw.rect(screen, RED, [food_pos[0], food_pos[1], snake_size, snake_size])
# 绘制蛇
for segment in snake_body:
pygame.draw.rect(screen, GREEN, [segment[0], segment[1], snake_size, snake_size])
pygame.display.update()
clock.tick(15)
pygame.quit()
这段代码首先初始化 pygame
,创建游戏窗口并设置窗口标题。接着定义了颜色常量以及蛇、食物的初始位置和大小等属性。在游戏循环中,通过捕获键盘事件来改变蛇的移动方向,并在每一帧更新蛇的位置,同时检测碰撞和食物的消耗情况。绘制部分负责将食物、蛇和游戏信息绘制到屏幕上,从而让玩家看到游戏的动态变化。当游戏结束时,退出 pygame
。
通过这段代码,我们可以体验到从零开始构建一个贪吃蛇游戏的简单快乐。尽管代码结构较为基础,但其中涉及的碰撞检测、随机生成、图形绘制等概念,是理解游戏开发的重要基础。