导语 急速奔跑享受生活中的美好时光! 梦想 重磅消息!木木子今天又要给大家介绍一款新游戏啦! 期待不期待呀来我们先来看看是什么游戏让大家这么沸腾 《天天酷跑》这款游戏有好几年的历史了,当初确实是十分火爆,还记得自己第一次接触这款游戏 是在高考后的暑假,因为那个假期比较长,就去一家服装店打工了,闲下来的时候店里的人就在玩游戏 天天酷跑,为了能有话题聊就入坑了,后来发现还有不少同学也都在玩,而且分数比自己高好多。 现在算算大概过去六七年了,自己早已放弃天天酷跑了。 可能因为天天酷跑是自己接触的第一款手游吧,印象比较深刻现在好不容易下载进去发现很多 规则都改了,捂脸。jpg 完全不会操作了。这不?准备做一款Python版简易的《天天跑酷》小游戏,顺便回一下童年撒! 小简介: 《天天酷跑》是腾讯移动游戏平台专为海量微信和手机QQ用户量身打造的一款精品手机游戏。 在沿袭传统玩法的基础上,特别加入了闪靓坐骑、萌动宠物等一系列心动设计,为玩家带来最为得 心应手的跑酷体验。随时随地与微信、QQ好友一起玩,抢占排行榜、爱心送不停、高分炫出来!贴 心交互让你和好友亲密无间,分享炫耀让你备受好友关注,成为酷跑达人! 大声告诉你的好友:跑酷从此不一样! 正文 本文是Pygame游戏模块制作的《天天跑酷》小游戏啦 一、准备中 好啦!我们正式开始准备小游戏所需要的素材、环境吧! 图片素材: 环境安装: Python3。6、Pycharm2019(大部分版本都是可以运行的)、Pygame部分内置模块。 模块安装:pipinstallihttps:pypi。douban。comsimple模块名 1hr游戏规则: 按空格键跳跃、按一次短跳跃、按二次长跳跃,中间会出现很多障碍物,还有相应的金币等,游戏失败后按空格键重新开始。 二、游戏步骤 1)。游戏初始化 利用pygame创建特定大小的游戏窗口。 显示游戏的初始界面,提示用户开始游戏 在游戏界面中设置背景图片,并显示人物、障碍物和金币等物体。 2)。游戏控制 人物自动向前奔跑,按空格键控制人物跳跃。 利用addObstacle函数创建障碍物。 利用updateScreen函数不断更新界面中物体的显示。 3)。碰撞检测 利用ListenKeyBoard函数监控用户的键盘输入,并检测人物和障碍物金币等是否碰撞。 人物和障碍物碰撞:当检测到人物和障碍物的位置信息有交集时,判断为碰撞,人物生命值减一,障碍物消灭。 人物和金币碰撞:当人物撞到金币时,金币消灭,得分100。 当人物成功躲避障碍物时,得分10。 利用judgeState函数来判断游戏是否结束。 游戏结束时显示最终得分,并提示用户按Enter键重新开始游戏。 三、正式敲代码importpygame,sysimportrandom 游戏配置width1200 窗口宽度height508 窗口高度sizewidth,heightscoreNone 分数myFontmyFont1None 字体surObjectNone 障碍物图片 surGameOverNone 游戏结束图片bgNone 背景对象roleNone 人物对象objectNone 障碍物对象 objectList〔〕 障碍物对象数组clockNone 时钟gameStateNone 游戏状态(0,1)表示(游戏中,游戏结束)classRole: 人物definit(self,surfaceNone,yNone): self。surfacesurface self。yy self。w(surface。getwidth())12 self。hsurface。getheight()2 self。currentFrame1 self。state0 0代表跑步状态,1代表跳跃状态,2代表连续跳跃 self。g1 重力加速度 self。vy0 y轴速度 self。vystart20 起跳开始速度 defgetRect(self): return(0,self。y12,self。w,self。h)classObject: 障碍物definit(self,surface,x0,y0): self。surfacesurface self。xx self。yy self。wsurface。getwidth() self。hsurface。getheight() self。currentFramerandom。randint(0,6) self。w100 self。h100 defgetRect(self): return(self。x,self。y,self。w,self。h) defcollision(self,rect1,rect2): 碰撞检测 if(rect2〔0〕rect1〔2〕20)or(rect1〔0〕40rect2〔2〕)or(rect1〔1〕rect1〔3〕rect2〔1〕20)or(rect2〔1〕rect2〔3〕rect1〔1〕20): returnFalse returnTrue classBg: 背景 definit(self,surface): self。surfacesurface self。dx10 self。wsurface。getwidth() self。rectsurface。getrect() definitGame(): globalbg,role,clock,gameState,surObject,surGameOver,score,myFont,myFont1,objectList 分数初始化 score0 初始化 objectList〔〕 加载字体 myFontpygame。font。Font(。freesansbold。ttf,32)myFont1pygame。font。Font(。freesansbold。ttf,64) 创建时钟对象(可以控制游戏循环频率) clockpygame。time。Clock() 初始化游戏状态 gameState0 游戏背景 surBgpygame。image。load(imagebg。bmp)。convertalpha() bgBg(surBg) 结束画面 surGameOverpygame。image。load(imagegameover。bmp)。convertalpha() 人物图片 surRolepygame。image。load(imagerole。png)。convertalpha() roleRole(surRole,50885) 障碍物图片 surObjectpygame。image。load(imageobject。png)。convertalpha() defaddObject(): globalsurObject,object,objectList,object rate4 是否生成障碍物 ifnotrandom。randint(0,300)rate: return yrandom。choice(〔height100,height200,height300,height400〕)objectObject(surObject,width40,y) objectList。append(object)defupdateLogic(): globalgameState,score 键盘事件处理foreventinpygame。event。get(): ifevent。typepygame。QUIT: sys。exit() elifevent。typepygame。KEYDOWN: 空格键跳跃 ifgameState0: ifevent。keypygame。KSPACE: ifrole。state0: role。state1 role。vyrole。vystart elifrole。state1: role。state2 role。vyrole。vystart elifgameState1: ifevent。keypygame。KSPACE: 重新开始游戏 initGame() ifgameState0: 背景的移动 bg。dx10 ifbg。dx1200: bg。dx0 人物的移动 ifrole。state0: role。currentFrame1 ifrole。currentFrame12: role。currentFrame0 else: role。yrole。vy role。vyrole。g ifrole。y50885: role。y50885 role。state0 障碍物的移动 addObject() forobjectinobjectList: object。x10 障碍物移动 障碍物超出屏幕,移除障碍物 ifobject。xobject。w0: objectList。remove(object) score10 避开障碍物,加10分 print(移除了一个目标) 碰撞检测 ifobject。collision(role。getRect(),object。getRect()): if(object。currentFrame6): objectList。remove(object) score100 吃金币加100分 print(score) print(吃了一个金币) else: gameState1游戏失败 print(发生了碰撞!) defupdateView(screen): 背景的贴图 screen。blit(bg。surface,〔bg。dx,0〕) screen。blit(bg。surface,〔1200bg。dx,0〕) 分数的贴图 textSurmyFont。render(score:dscore,True,(128,128,128)) screen。blit(textSur,(500,20)) deltextSur 人物的贴图screen。blit(role。surface,〔0,role。y〕,〔int(role。currentFrame)role。w,0,role。w,role。h〕) 障碍物的贴图 forobjectinobjectList: screen。blit(object。surface,〔object。x,object。y〕,〔int(object。currentFrame)object。w,0,object。w,object。h〕) defjudgeState(screen): globalgameState ifgameState0: updateView(screen) returnelifgameState1: screen。blit(surGameOver,〔0,0〕) textSurmyFont1。render(GameOverScore:dscore,True,(255,0,0))screen。blit(textSur,(width2350,height2150)) defmain(): pygame。init() screenpygame。display。setmode(size) pygame。display。setcaption(天天跑酷CSDN:梦想) initGame() screen。blit(bg。surface,〔0,0〕) whileTrue: 设置时钟频率 clock。tick(60) judgeState(screen) updateLogic() pygame。display。flip()main()四、效果展示 视频展示 游戏全面入侵生活:Python发布酷跑计划! 截图展示 游戏开始: 跳跃、障碍物: 游戏结束: 总结 看完这款游戏,是不是涌出满满的回忆呢:趁爸妈不在家时,偷偷打开电脑玩游戏 刚买智能手机时,下载一两个最火爆的游戏 现在看来,每一款游戏,都是时光的印记,你还有什么游戏回忆杀呢?之前也写过很多童年经典游戏可以去看看哈! 码字不易点个关注行不行