使用Python开发一个贪吃蛇小案例
时间: 2023-06-13 11:04:30 浏览: 74
好的,下面是一个简单的贪吃蛇小游戏。
首先,我们需要导入必要的模块和库。
```python
import pygame
import random
```
然后,我们需要定义一些常量和变量。
```python
# 游戏界面大小
WIDTH = 500
HEIGHT = 500
# 蛇的大小
SNAKE_SIZE = 10
# 食物的大小
FOOD_SIZE = 10
# 蛇的速度
SNAKE_SPEED = 10
# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 初始化 pygame
pygame.init()
# 创建游戏界面
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("贪吃蛇")
# 设置时钟
clock = pygame.time.Clock()
# 定义字体
font = pygame.font.SysFont(None, 25)
# 初始化蛇的位置
snake_x = WIDTH / 2
snake_y = HEIGHT / 2
# 初始化蛇的速度
snake_speed_x = 0
snake_speed_y = 0
# 初始化蛇的身体
snake_body = []
snake_length = 1
# 初始化食物的位置
food_x = round(random.randrange(0, WIDTH - FOOD_SIZE) / 10.0) * 10.0
food_y = round(random.randrange(0, HEIGHT - FOOD_SIZE) / 10.0) * 10.0
```
接下来,我们需要定义一些函数。
```python
# 画蛇的函数
def draw_snake(snake_body):
for body in snake_body:
pygame.draw.rect(screen, GREEN, [body[0], body[1], SNAKE_SIZE, SNAKE_SIZE])
# 画食物的函数
def draw_food(food_x, food_y):
pygame.draw.rect(screen, RED, [food_x, food_y, FOOD_SIZE, FOOD_SIZE])
# 画分数的函数
def draw_score(score):
text = font.render("Score: " + str(score), True, WHITE)
screen.blit(text, [0, 0])
```
然后,我们需要创建一个游戏循环。
```python
# 游戏循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
snake_speed_x = -SNAKE_SPEED
snake_speed_y = 0
elif event.key == pygame.K_RIGHT:
snake_speed_x = SNAKE_SPEED
snake_speed_y = 0
elif event.key == pygame.K_UP:
snake_speed_x = 0
snake_speed_y = -SNAKE_SPEED
elif event.key == pygame.K_DOWN:
snake_speed_x = 0
snake_speed_y = SNAKE_SPEED
# 移动蛇的头部
snake_x += snake_speed_x
snake_y += snake_speed_y
# 判断蛇是否吃到了食物
if snake_x == food_x and snake_y == food_y:
food_x = round(random.randrange(0, WIDTH - FOOD_SIZE) / 10.0) * 10.0
food_y = round(random.randrange(0, HEIGHT - FOOD_SIZE) / 10.0) * 10.0
snake_length += 1
# 更新蛇的身体
snake_head = []
snake_head.append(snake_x)
snake_head.append(snake_y)
snake_body.append(snake_head)
if len(snake_body) > snake_length:
del snake_body[0]
# 检测蛇是否碰到了边界
if snake_x < 0 or snake_x > WIDTH - SNAKE_SIZE or snake_y < 0 or snake_y > HEIGHT - SNAKE_SIZE:
running = False
# 检测蛇是否碰到了自己的身体
for body in snake_body[:-1]:
if body == snake_head:
running = False
# 清空屏幕
screen.fill(BLACK)
# 画蛇和食物
draw_snake(snake_body)
draw_food(food_x, food_y)
# 画分数
draw_score(snake_length - 1)
# 更新屏幕
pygame.display.update()
# 设置帧率
clock.tick(30)
# 退出 pygame
pygame.quit()
quit()
```
完整代码如下:
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)