python+pygame 贪吃蛇游戏
今天我们用python和python的工具包pygame来编写一个贪吃蛇的小游戏
贪吃蛇游戏功能介绍
贪吃蛇的游戏规则如下:
通过上下左右键或者WASD键来移动蛇来,让它吃到食物,每吃到食物,蛇的长度变长,并获得分数。若蛇碰到游戏边际或者自身,则蛇死亡,游戏结束。
游戏设计思路
根据游戏规则,我们需要:
1.初始化游戏环境。
2.初始化蛇、食物
3.监听键盘动作
4.蛇的运动,吃食物,是否死亡
5.该局游戏结束,是否还有再玩。
其中的难点在于如何在屏幕上展示蛇的运动,其实我们肉眼所见的蛇的运动并不是真实的,而是在后台通过刷新蛇的坐标而实现的。即可以创建一个蛇的坐标列表,每移动一次,则新的坐标加入,同时删除末尾坐标,看起来像是蛇的在移动。
一个简单地设计框图如下:
代码实现
''' my_snake.py @author HelloWorld! @time:2019.10.27 ''' import random import pygame import sys from pygame.locals import * windows_width=800 #游戏窗口的大小,原点在左上角 windows_height=600 cell_size=20 #snake 的大小,需被窗口长宽整除 #一些颜色定义 white = (255, 255, 255) black = (0, 0, 0) gray = (230, 230, 230) dark_gray = (40, 40, 40) DARKGreen = (0, 155, 0) Green = (0, 255, 0) Red = (255, 0, 0) blue = (0, 0, 255) dark_blue =(0,0, 139) BG_COLOR = (184,224,217) #贪吃蛇的地图尺寸 map_width = int(windows_width / cell_size) map_height = int(windows_height / cell_size) #蛇的移动速度 snake_speed=5 #方向定义 UP = 1 DOWN = 2 LEFT = 3 RIGHT = 4 #主函数 def main_game(): pygame.init() #初始化gygame screen=pygame.display.set_mode((windows_width,windows_height)) pygame.display.set_caption("贪吃蛇游戏") snake_speed_clock = pygame.time.Clock() # 创建Pygame时钟对象 screen.fill(white) while True: run_game(screen,snake_speed_clock) #游戏主体 gameover(screen) #游戏结束 def run_game(screen,snake_speed_clock): #初始化蛇的位置,方向,食物的位置 start_x=random.randint(3,map_width-8) start_y=random.randint(3,map_width-8) snake_coords=[{ 'x':start_x,'y':start_y},{ 'x':start_x-1,'y':start_y},{ 'x':start_x-2,'y':start_y}]#初始化snake,也可以用列表的的列表 direction = RIGHT food=get_random_location() #循环 while True: for event in pygame.event.get(): #键盘事件监听 if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN: #按键事件 if (event.key==K_LEFT or event.key==K_a) and direction!=RIGHT: direction=LEFT elif (event.key==K_RIGHT or event.key==K_d) and direction!=LEFT: direction=RIGHT elif (event.key == K_UP or event.key == K_w) and direction != DOWN: direction = UP elif (event.key == K_DOWN or event.key == K_s) and direction != UP: direction = DOWN elif event.key == K_ESCAPE: pygame.quit() sys.exit() snake_move(direction,snake_coords) #根据方向,移动蛇 alive=snake_is_alive(snake_coords) #判断蛇的死活 if not alive: #如果挂了,则终止循环,跳出run_game函数,执行gameover break snake_eat_foods(snake_coords,food) #没挂,则看看迟到食物了吗 screen.fill(BG_COLOR) #游戏背景刷新 #下面draw,是把蛇食物等画出来 draw_snake(screen, snake_coords) draw_food(screen,food) draw_score(screen, len(snake_coords) - 3) # draw_grid(screen) pygame.display.flip() #控制执行次数 snake_speed_clock.tick(snake_speed) # 控制fps #根据移动方向,更新蛇头坐标 def snake_move(directtion,snake_coords): if directtion==UP: newHead={ 'x':snake_coords[0]['x'],'y':snake_coords[0]['y']-1} elif directtion==DOWN: newHead = { 'x': snake_coords[0][
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113相关知识
基于单片机的贪吃蛇游戏设计
单片机贪吃蛇 毕业设计.pdf
可爱宠物竞技网游 贪吃蛇
贪吃蛇大作战®的宠物技能升级建议!
玩家疯狂,蛇也疯狂,贪吃蛇和玩家一起忙
如何在贪吃蛇大作战®中获得更多的背景宠物?
如何在贪吃蛇大作战®中获得更多的比赛宠物外观道具?
如何在贪吃蛇大作战®中获得更多的比赛宠物外观卡牌?
贪吃蛇无尽大作战宠物培养攻略
C语言贪吃蛇,流畅版,可继续升级改造
网址: python+pygame 贪吃蛇游戏 https://www.mcbbbk.com/newsview657251.html
上一篇: JS简易贪吃蛇,构造函数实现 |
下一篇: 今日可以扫舍吗 2024年8月2 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352