用python编写的贪吃蛇游戏

信息化聊科技 2025-01-29 14:11:32
这段代码是一个简单的贪吃蛇游戏,使用了Python的Pygame库来实现。以下是代码的主要功能和逻辑解释: 初始化和设置导入库:pygame:用于创建游戏窗口、处理事件、绘制图形等。random:用于生成随机数,例如食物的位置。time:用于控制游戏结束时的延迟。初始化Pygame:pygame.init():初始化Pygame库,准备游戏环境。定义颜色:定义了白色、黑色、红色、绿色和金色,用于绘制游戏界面。定义屏幕大小:WIDTH 和 HEIGHT:屏幕的宽度和高度。CELL_SIZE:每个格子的大小。创建屏幕:pygame.display.set_mode((WIDTH, HEIGHT)):创建一个指定大小的窗口。pygame.display.set_caption("蛇年贪吃蛇"):设置窗口标题。蛇和食物的初始化蛇的初始位置和速度:snake:蛇的身体,用一个列表表示,每个元素是一个元组,表示蛇的一个身体段的位置。snake_direction:蛇的移动方向,用一个元组表示,表示每次移动的x和y偏移量。食物的初始位置:使用 random.randint 生成随机位置,确保食物不会出现在屏幕外。分数:score:记录玩家的得分。字体:font:用于绘制分数文本。游戏主循环事件处理:pygame.event.get():获取所有事件。检查是否点击了关闭按钮(pygame.QUIT),如果是,则退出游戏。检查键盘事件(pygame.KEYDOWN),根据按下的方向键改变蛇的移动方向。移动蛇:计算蛇的新头部位置。将新头部插入到蛇的身体列表的开头。如果蛇没有吃到食物,则移除蛇的尾部(snake.pop())。检查是否吃到食物:如果蛇的头部与食物的位置相同,则增加分数,并重新生成食物的位置。检查是否撞墙或撞到自己:检查蛇的头部是否超出了屏幕边界或是否与蛇的身体其他部分重合。如果发生碰撞,则暂停1秒后退出游戏。绘制游戏界面:使用 screen.fill(BLACK) 填充背景为黑色。使用 pygame.draw.rect 绘制蛇的身体和食物。使用 font.render 和 screen.blit 绘制分数文本。更新屏幕:pygame.display.flip():更新屏幕显示。控制游戏速度:使用 pygame.time.Clock().tick(10) 控制游戏的帧率为每秒10帧。退出游戏pygame.quit():退出Pygame库,结束游戏。注释掉的音效部分代码中注释掉了音效部分,如果需要添加音效,可以取消注释并确保有相应的音效文件(如 eat.wav 和 game_over.wav)。总结这段代码实现了一个基本的贪吃蛇游戏,玩家可以通过方向键控制蛇的移动,吃到食物增加分数,撞墙或撞到自己则游戏结束。游戏界面使用Pygame库绘制,简单易懂。 import pygameimport randomimport time# 初始化Pygamepygame.init()# 定义颜色WHITE = (255, 255, 255)BLACK = (0, 0, 0)RED = (255, 0, 0)GREEN = (0, 255, 0)GOLD = (255, 215, 0)# 定义屏幕大小WIDTH, HEIGHT = 600, 400CELL_SIZE = 20# 创建屏幕screen = pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption("蛇年贪吃蛇")# 定义蛇的初始位置和速度snake = [(100, 100), (80, 100), (60, 100)]snake_direction = (CELL_SIZE, 0)# 定义食物的初始位置import time# eat_sound = pygame.mixer.Sound("eat.wav") # 注释掉这行# game_over_sound = pygame.mixer.Sound("game_over.wav") # 注释掉这行# 在吃到食物时播放音效的部分# eat_sound.play() # 注释掉这行# 在游戏结束时播放音效的部分# game_over_sound.play() # 注释掉这行food = (random.randint(0, (WIDTH - CELL_SIZE) // CELL_SIZE) * CELL_SIZE, random.randint(0, (HEIGHT - CELL_SIZE) // CELL_SIZE) * CELL_SIZE)# 定义分数score = 0# 定义字体font = pygame.font.Font(None, 36)# 游戏主循环running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP and snake_direction != (0, CELL_SIZE): snake_direction = (0, -CELL_SIZE) elif event.key == pygame.K_DOWN and snake_direction != (0, -CELL_SIZE): snake_direction = (0, CELL_SIZE) elif event.key == pygame.K_LEFT and snake_direction != (CELL_SIZE, 0): snake_direction = (-CELL_SIZE, 0) elif event.key == pygame.K_RIGHT and snake_direction != (-CELL_SIZE, 0): snake_direction = (CELL_SIZE, 0) # 移动蛇 new_head = (snake[0][0] + snake_direction[0], snake[0][1] + snake_direction[1]) snake.insert(0, new_head) # 检查是否吃到食物 if snake[0] == food: score += 1 food = (random.randint(0, (WIDTH - CELL_SIZE) // CELL_SIZE) * CELL_SIZE, random.randint(0, (HEIGHT - CELL_SIZE) // CELL_SIZE) * CELL_SIZE) else: snake.pop() # 检查是否撞墙或撞到自己 if (snake[0][0] < 0 or snake[0][0] >= WIDTH or snake[0][1] < 0 or snake[0][1] >= HEIGHT or snake[0] in snake[1:]): time.sleep(1) running = False # 绘制背景 screen.fill(BLACK) # 绘制蛇 for segment in snake: pygame.draw.rect(screen, GREEN, (segment[0], segment[1], CELL_SIZE, CELL_SIZE)) # 绘制食物 pygame.draw.rect(screen, RED, (food[0], food[1], CELL_SIZE, CELL_SIZE)) # 绘制分数 score_text = font.render(f"Score: {score}", True, WHITE) screen.blit(score_text, (10, 10)) # 更新屏幕 pygame.display.flip() # 控制游戏速度 pygame.time.Clock().tick(10)# 退出游戏pygame.quit()游戏使用说明游戏目标控制蛇在屏幕上移动,吃掉出现的食物,尽量避免撞到墙壁或自己的身体,以获得更高的分数。 游戏控制方向键:上箭头键:控制蛇向上移动。下箭头键:控制蛇向下移动。左箭头键:控制蛇向左移动。右箭头键:控制蛇向右移动。游戏开始确保你的计算机上已安装Python和Pygame库。将上述代码保存为一个Python文件,例如 snake_game.py。打开终端或命令提示符,导航到保存文件的目录。运行游戏:bash复制python snake_game.py游戏界面屏幕:游戏窗口大小为600x400像素。蛇:绿色的方块,表示蛇的身体。食物:红色的方块,表示食物。分数:白色文本,显示在屏幕左上角,记录玩家的得分。游戏规则移动:使用方向键控制蛇的移动方向。吃食物:当蛇的头部与食物的位置重合时,蛇会吃掉食物,身体增长一段,分数增加1分。游戏结束:如果蛇的头部撞到墙壁(屏幕边界)或自己的身体,游戏结束。游戏结束后,屏幕会暂停1秒,然后关闭。游戏结束游戏结束后,窗口会自动关闭。如果需要重新开始游戏,需要重新运行脚本。提示避免快速改变方向:蛇不能直接反向移动,例如从向上移动直接变为向下移动,否则游戏会认为这是撞到自己而结束。保持冷静:随着蛇的长度增加,控制难度也会增加,保持冷静,避免急躁。希望你玩得开心!
0 阅读:0

信息化聊科技

简介:感谢大家的关注