提供一个python贪吃蛇的范例
时间: 2024-03-07 14:19:56 浏览: 9
以下是一个基本的Python贪吃蛇游戏范例:
```python
import pygame
import random
# 游戏窗口大小
WINDOW_WIDTH = 600
WINDOW_HEIGHT = 600
# 蛇身每个方块的大小
BLOCK_SIZE = 20
# 初始化pygame
pygame.init()
# 创建游戏窗口
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption('贪吃蛇')
# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 定义字体
font = pygame.font.SysFont(None, 25)
# 绘制蛇的函数
def draw_snake(snake_list):
for block in snake_list:
pygame.draw.rect(window, GREEN, [block[0], block[1], BLOCK_SIZE, BLOCK_SIZE])
# 主函数
def main():
# 初始化蛇的位置和长度
snake_head = [WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2]
snake_body = [snake_head, [snake_head[0] - BLOCK_SIZE, snake_head[1]], [snake_head[0] - BLOCK_SIZE * 2, snake_head[1]]]
direction = 'right'
# 初始化食物的位置
food_position = [random.randrange(0, WINDOW_WIDTH - BLOCK_SIZE, BLOCK_SIZE),
random.randrange(0, WINDOW_HEIGHT - BLOCK_SIZE, BLOCK_SIZE)]
# 初始化分数
score = 0
# 游戏循环
game_over = False
while not game_over:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT and direction != 'right':
direction = 'left'
elif event.key == pygame.K_RIGHT and direction != 'left':
direction = 'right'
elif event.key == pygame.K_UP and direction != 'down':
direction = 'up'
elif event.key == pygame.K_DOWN and direction != 'up':
direction = 'down'
# 移动蛇的位置
if direction == 'right':
snake_head[0] += BLOCK_SIZE
elif direction == 'left':
snake_head[0] -= BLOCK_SIZE
elif direction == 'up':
snake_head[1] -= BLOCK_SIZE
elif direction == 'down':
snake_head[1] += BLOCK_SIZE
# 判断是否吃到了食物
if snake_head == food_position:
food_position = [random.randrange(0, WINDOW_WIDTH - BLOCK_SIZE, BLOCK_SIZE),
random.randrange(0, WINDOW_HEIGHT - BLOCK_SIZE, BLOCK_SIZE)]
score += 10
snake_body.append([0, 0])
# 更新蛇的身体
for i in range(len(snake_body) - 1, 0, -1):
snake_body[i][0] = snake_body[i - 1][0]
snake_body[i][1] = snake_body[i - 1][1]
snake_body[0][0] = snake_head[0]
snake_body[0][1] = snake_head[1]
# 判断是否撞到了边界或自身
if snake_head[0] < 0 or snake_head[0] >= WINDOW_WIDTH or snake_head[1] < 0 or snake_head[1] >= WINDOW_HEIGHT:
game_over = True
for block in snake_body[1:]:
if snake_head == block:
game_over = True
# 绘制游戏界面
window.fill(WHITE)
pygame.draw.rect(window, RED, [food_position[0], food_position[1], BLOCK_SIZE, BLOCK_SIZE])
draw_snake(snake_body)
text = font.render('Score: ' + str(score), True, BLACK)
window.blit(text, [0, 0])
pygame.display.update()
# 退出游戏
pygame.quit()
quit()
# 调用主函数
if __name__ == '__main__':
main()
```
在运行上述代码之前,需要先安装pygame库。可以使用以下命令进行安装:
```
pip install pygame
```
需要注意的是,由于贪吃蛇游戏需要不断地处理事件和更新游戏界面,因此在游戏循环中需要使用事件循环和定时器等技术来实现。