编写一个贪吃蛇的游戏代码
时间: 2023-08-24 11:15:26 浏览: 25
下面是一个简单的Python贪吃蛇游戏代码,具体实现可以根据自己的需求进行调整和完善。
```python
import pygame
import random
# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# 定义游戏屏幕大小
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# 定义方格大小和数量
BLOCK_SIZE = 20
BLOCK_WIDTH = SCREEN_WIDTH // BLOCK_SIZE
BLOCK_HEIGHT = SCREEN_HEIGHT // BLOCK_SIZE
# 初始化pygame
pygame.init()
# 创建游戏窗口
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Snake Game")
# 定义字体
font = pygame.font.SysFont('arial', 25)
# 定义游戏结束函数
def game_over():
# 游戏结束提示
text = font.render("Game Over", True, WHITE)
screen.blit(text, [SCREEN_WIDTH // 2 - 75, SCREEN_HEIGHT // 2 - 25])
pygame.display.update()
# 等待3秒
pygame.time.wait(3000)
# 退出游戏
pygame.quit()
quit()
# 定义画蛇的函数
def draw_snake(screen, snake_list):
for block in snake_list:
pygame.draw.rect(screen, GREEN, [block[0], block[1], BLOCK_SIZE, BLOCK_SIZE])
# 定义主函数
def main():
# 初始化蛇和食物位置
snake_head = [SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2]
snake_list = [snake_head]
direction = 'right'
food_pos = [random.randint(0, BLOCK_WIDTH - 1) * BLOCK_SIZE, random.randint(0, BLOCK_HEIGHT - 1) * BLOCK_SIZE]
# 设置游戏循环标志
game_over_flag = False
# 开始游戏循环
while not game_over_flag:
# 检测键盘事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 关闭游戏
game_over_flag = True
elif event.type == pygame.KEYDOWN:
# 根据按键设置方向
if event.key == pygame.K_LEFT:
direction = 'left'
elif event.key == pygame.K_RIGHT:
direction = 'right'
elif event.key == pygame.K_UP:
direction = 'up'
elif event.key == pygame.K_DOWN:
direction = 'down'
# 移动蛇头
if direction == 'left':
snake_head[0] -= BLOCK_SIZE
elif direction == 'right':
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_pos:
# 生成新的食物位置
food_pos = [random.randint(0, BLOCK_WIDTH - 1) * BLOCK_SIZE, random.randint(0, BLOCK_HEIGHT - 1) * BLOCK_SIZE]
else:
# 移除蛇尾
snake_list.pop()
# 添加蛇头
snake_list.insert(0, list(snake_head))
# 判断是否撞墙或者自身
if snake_head[0] < 0 or snake_head[0] >= SCREEN_WIDTH or snake_head[1] < 0 or snake_head[1] >= SCREEN_HEIGHT or snake_head in snake_list[1:]:
game_over()
# 绘制背景色
screen.fill(BLACK)
# 绘制食物
pygame.draw.rect(screen, RED, [food_pos[0], food_pos[1], BLOCK_SIZE, BLOCK_SIZE])
# 绘制蛇
draw_snake(screen, snake_list)
# 更新屏幕
pygame.display.update()
# 设置游戏帧率
pygame.time.Clock().tick(10)
# 退出游戏
pygame.quit()
quit()
if __name__ == '__main__':
main()
```
该代码使用pygame库实现了一个简单的贪吃蛇游戏,玩家可以通过键盘控制蛇的移动方向,吃到食物得分,同时避免蛇头碰到墙壁或者自身。
阅读全文