收藏 分销(赏)

游戏贪吃蛇python编程代码.pdf

上传人:鱼** 文档编号:851927 上传时间:2024-03-29 格式:PDF 页数:6 大小:215.01KB
下载 相关 举报
游戏贪吃蛇python编程代码.pdf_第1页
第1页 / 共6页
游戏贪吃蛇python编程代码.pdf_第2页
第2页 / 共6页
游戏贪吃蛇python编程代码.pdf_第3页
第3页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、游戏贪吃蛇游戏贪吃蛇 pythonpython 编程代码编程代码基本准备首先,我们需要安装 pygame 库,小编通过 pip install pygame,很快就安装好了。在完成贪吃蛇小游戏的时候,我们需要知道整个游戏分为四部分:游戏显示:游戏界面、结束界面贪吃蛇:头部、身体、食物判断、死亡判断树莓:随机生成按键控制:上、下、左、右游戏显示首先,我们来初始化 pygame,定义颜色、游戏界面的窗口大小、标题和图标等。1#初始化 pygame2pygame.init()3fpsClock=pygame.time.Clock()4#创建 pygame显示层5playSurface=pygame.

2、display.set_mode(600,460)#窗口大小6pygame.display.set_caption(Snake Game)#窗口名称7#定义颜色变量8redColour=pygame.Color(255,0,0)9blackColour=pygame.Color(0,0,0)10whiteColour=pygame.Color(255,255,255)11greyColour=pygame.Color(150,150,150)游戏结束界面,我们会显示“Game Over!”和该局游戏所得分数,相关代码如下:1#定义 gameOver函数2def gameOver(playSur

3、face,score):3gameOverFont=pygame.font.SysFont(arial.ttf,54)#游戏结束字体和大小4gameOverSurf=gameOverFont.render(Game Over!,True,greyColour)#游戏结束内容显示5gameOverRect=gameOverSurf.get_rect()6gameOverRect.midtop=(300,10)#显示位置7playSurface.blit(gameOverSurf,gameOverRect)8scoreFont=pygame.font.SysFont(arial.ttf,54)#得

4、分情况显示9scoreSurf=scoreFont.render(Score:+str(score),True,greyColour)10scoreRect=scoreSurf.get_rect()11scoreRect.midtop=(300,50)12playSurface.blit(scoreSurf,scoreRect)13pygame.display.flip()#刷新显示界面14time.sleep(5)#休眠五秒钟自动退出界面15pygame.quit()16sys.exit()贪吃蛇和树莓我们需要将整个界面看成许多20*20 的小方块,每个方块代表一个单位,蛇的长度用单位来表示

5、,同时我们采用列表的形式存储蛇的身体。同时,我们都知道,树莓的位置是随机的。所以,我们需要让树莓出现的位置是游戏界面中的随机位置,同时,每吃到一颗树莓,就需要重新生成一颗新的树莓,并且得分加1。相关初始化设置如下:1snakePosition=100,100#贪吃蛇 蛇头的位置2snakeSegments=100,100#贪吃蛇 蛇的身体,初始为一个单位3raspberryPosition=300,300#树莓的初始位置4raspberrySpawned=1#树莓的个数为 15direction=right#初始方向为右6changeDirection=direction7score=0#初始

6、得分如何控制贪吃蛇的运动轨迹呢,那么就需要按键控制了。我们通过键盘的和WSAD来控制,如果想直接退出游戏,则可以通过Esc 键。这里需要强调的是,贪吃蛇里面是不能反方向运动,因此,我们需要进一步的增加限制条件:1#检测例如按键等 pygame 事件2for event in pygame.event.get():3if event.type=QUIT:4pygame.quit()5sys.exit()6elif event.type=KEYDOWN:7#判断键盘事件8if event.key=K_RIGHT or event.key=ord(d):9changeDirection=right1

7、0if event.key=K_LEFT or event.key=ord(a):11changeDirection=left12if event.key=K_UP or event.key=ord(w):13changeDirection=up14if event.key=K_DOWN or event.key=ord(s):15changeDirection=down16if event.key=K_ESCAPE:17pygame.event.post(pygame.event.Event(QUIT)18#判断是否输入了反方向19if changeDirection=right and n

8、ot direction=left:20direction=changeDirection21if changeDirection=left and not direction=right:22direction=changeDirection23if changeDirection=up and not direction=down:24direction=changeDirection25if changeDirection=down and not direction=up:26direction=changeDirection方向设置好了,那么贪吃蛇蛇身变换怎么做啊?很简单,我们只需要

9、根据方向变换一下坐标即可。1#根据方向移动蛇头的坐标2if direction=right:3snakePosition0+=204if direction=left:5snakePosition0-=206if direction=up:7snakePosition1-=208if direction=down:9snakePosition1+=2010#增加蛇的长度11snakeSegments.insert(0,list(snakePosition)贪吃蛇游戏里面最重要的就是食物判断和死亡判断。首先是食物判断,我们通过键盘按键来决定贪吃蛇的走向,以便它能吃到树莓。如何判断贪吃蛇有没有吃到

10、树莓呢?很简单,如果贪吃蛇蛇头的位置和树莓的位置重合了,也就是相同,那么贪吃蛇就吃到树莓了,否则没有。同时,一旦发生了树莓被吃的情况,立刻重新随机生成一个新的树莓。相关代码如下:1#判断是否吃掉了树莓2if snakePosition0=raspberryPosition0 and snakePosition1=raspberryPosition1:3raspberrySpawned=04 else:5snakeSegments.pop()#若没有吃掉树莓,需将最后一单位的蛇身提出列表,此处和蛇身移动时位置变换有关6#如果吃掉树莓,则重新生成树莓7if raspberrySpawned=0:8

11、x=random.randrange(1,30)#和游戏界面大小相关9y=random.randrange(1,23)10raspberryPosition=int(x*20),int(y*20)11raspberrySpawned=112score+=1死亡判断则分为两类情况,一是触碰到了游戏界面的边界,二是贪吃蛇触碰到了自己的身体。一旦发生死亡,则触发 gameover。1#判断是否死亡2if snakePosition0 600 or snakePosition0 460 or snakePosition1 600 or snakePosition0 460 or snakePosition1 0:99gameOver(playSurface,score)100for snakeBody in snakeSegments1:101if snakePosition0=snakeBody0 and snakePosition1=snakeBody1:102gameOver(playSurface,score)103#控制游戏速度104fpsClock.tick(5)105106if _name_=_main_:107main()

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服