游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Python游戏开发,Python实现贪吃蛇小游戏与吃豆豆附

  开发工具
  Python版本:3。6。4
  相关模块:
  pygame模块;
  以及一些Python自带的模块。环境搭建
  安装Python并添加到环境变量,pip安装需要的相关模块即可。原理简介
  贪吃蛇的游戏规则应该不需要我多做介绍了吧TT。写个贪吃蛇游戏其实还是很简单的。首先,我们进行一下游戏初始化:pygame。init()screenpygame。display。setmode(cfg。SCREENSIZE)pygame。display。setcaption(GreedySnake微信公众号:Charles的皮卡丘)clockpygame。time。Clock()复制代码
  然后定义一个贪吃蛇类:贪吃蛇类classSnake(pygame。sprite。Sprite):definit(self,cfg,kwargs):pygame。sprite。Sprite。init(self)self。cfgcfgself。headcoord〔random。randint(5,cfg。GAMEMATRIXSIZE〔0〕6),random。randint(5,cfg。GAMEMATRIXSIZE〔1〕6)〕self。tailcoords〔〕foriinrange(1,3):self。tailcoords。append(〔self。headcoord〔0〕i,self。headcoord〔1〕〕)self。directionrightself。headcolors〔(0,80,255),(0,255,255)〕self。tailcolors〔(0,155,0),(0,255,0)〕复制代码
  其中headcoord用来记录蛇头所在位置,而tailcoords是一个二维数组,用来记录所有蛇身的位置。一开始,贪吃蛇长为3,并且位置是随机生成的。用户通过键来控制贪吃蛇的行动:按键检测foreventinpygame。event。get():ifevent。typepygame。QUIT:pygame。quit()sys。exit()elifevent。typepygame。KEYDOWN:ifevent。keyin〔pygame。KUP,pygame。KDOWN,pygame。KLEFT,pygame。KRIGHT〕:snake。setDirection({pygame。KUP:up,pygame。KDOWN:down,pygame。KLEFT:left,pygame。KRIGHT:right}〔event。key〕)复制代码
  需要注意的是,贪吃蛇不能180大拐弯,只能90地拐弯。例如正在向左行动的贪吃蛇不能瞬间变成向右行动。具体而言,代码实现如下:设置方向defsetDirection(self,direction):assertdirectionin〔up,down,right,left〕ifdirectionup:ifself。headcoord〔1〕1!self。tailcoords〔0〕〔1〕:self。directiondirectionelifdirectiondown:ifself。headcoord〔1〕1!self。tailcoords〔0〕〔1〕:self。directiondirectionelifdirectionleft:ifself。headcoord〔0〕1!self。tailcoords〔0〕〔0〕:self。directiondirectionelifdirectionright:ifself。headcoord〔0〕1!self。tailcoords〔0〕〔0〕:self。directiondirection复制代码
  然后,我们需要随机生成一个食物,且需要保证该食物的位置不与贪吃蛇的位置相同:食物类classApple(pygame。sprite。Sprite):definit(self,cfg,snakecoords,kwargs):pygame。sprite。Sprite。init(self)self。cfgcfgwhileTrue:self。coord〔random。randint(0,cfg。GAMEMATRIXSIZE〔0〕1),random。randint(0,cfg。GAMEMATRIXSIZE〔1〕1)〕ifself。coordnotinsnakecoords:breakself。color(255,0,0)画到屏幕上defdraw(self,screen):cx,cyint((self。coord〔0〕0。5)self。cfg。BLOCKSIZE),int((self。coord〔1〕0。5)self。cfg。BLOCKSIZE)pygame。draw。circle(screen,self。color,(cx,cy),self。cfg。BLOCKSIZE22)随机生成一个食物appleApple(cfg,snake。coords)复制代码
  在更新贪吃蛇的时候,如果它吃到了食物,则蛇身长加一,否则只是简单的按照给定的方向行动而不改变蛇身长度:更新贪吃蛇defupdate(self,apple):根据指定的方向运动self。tailcoords。insert(0,copy。deepcopy(self。headcoord))ifself。directionup:self。headcoord〔1〕1elifself。directiondown:self。headcoord〔1〕1elifself。directionleft:self。headcoord〔0〕1elifself。directionright:self。headcoord〔0〕1判断是否吃到了食物ifself。headcoordapple。coord:returnTrueelse:self。tailcoordsself。tailcoords〔:1〕returnFalse复制代码
  同时,当贪吃蛇吃到食物时,需要重新生成一个新的食物:appleApple(cfg,snake。coords)复制代码
  最后,当贪吃蛇碰到墙壁或者蛇头碰到蛇身时,游戏结束:判断游戏是否结束propertydefisgameover(self):if(self。headcoord〔0〕0)or(self。headcoord〔1〕0)or(self。headcoord〔0〕self。cfg。GAMEMATRIXSIZE〔0〕)or(self。headcoord〔1〕self。cfg。GAMEMATRIXSIZE〔1〕):returnTrueifself。headcoordinself。tailcoords:returnTruereturnFalse复制代码
  并显示一下游戏结束界面:endInterface(screen,cfg)复制代码效果展示需要项完整目源的也可以点赞关注私信【源码】
  经典吃豆豆小游戏原理简介效果展示
  游戏简介:
  玩家通过键控制游戏的主角吃豆人吃掉藏在迷宫内的所有豆子,并且不能被鬼魂抓到。
  若能顺利吃完迷宫内的所有豆子并且不被鬼魂抓到,则游戏胜利,否则游戏失败。
  逐步实现:
  Step1:定义游戏精灵类
  首先,让我们先来明确一下该游戏需要哪些游戏精灵类。
  墙类
  食物类(即豆豆)
  角色类
  角色类包括吃豆人和鬼魂,鬼魂由电脑控制其运动轨迹,吃豆人由玩家控制其运动轨迹。
  显然,其均需具备更新角色位置和改变角色运动方向的能力,其源代码如下:
  Step2:设计游戏地图
  利用Step1中定义的游戏精灵类,我们就可以开始设计游戏地图了。由于时间有限,我只写了一个关卡的游戏地图,有兴趣的小伙伴可以在此基础上进行扩展(在我的源代码基础上进行扩展是很方便滴)。游戏地图的设计包括以下四方面内容:
  创建墙
  创建门(一开始关幽灵用的)
  image。gif
  创建角色
  创建食物
  因为食物不能和墙、门以及角色的位置重叠,所以为了方便设计游戏地图,要先创建完墙、门以及角色后再创建食物:
  Step3:设计游戏主循环
  接下来开始设计游戏主循环。首先是初始化:
  然后定义主函数:
  其中startLevelGame函数用于开始某一关游戏,其源代码如下:
  showText函数用于在游戏结束或关卡切换时在游戏界面中显示提示性文字,其源代码如下:
  文章到这里就结束了,感谢你的观看,记得点赞关注下篇文章分享消消乐小游戏为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,需要项目源的也可以点赞关注私信【源码】回馈每一个读者,希望能帮到你。

篮球名人堂如期而至,中国篮球会越来越好!2023年4月9日,中国的篮球发展史迎来了里程碑式事件2022年中国篮球名人堂入堂仪式在天津举行,主题是传奇自传承。篮球协会主席姚明等中国篮球名宿、各界代表共七十余人出席了该仪……今年春节夜间到青秀山赏樱享受一场视觉的饕餮盛宴今年春节期间,白天游人在南宁青秀山风景区赏花游玩后,晚上还可以到东区体验夜樱之梦,观看国潮演出,品尝上百种精品美食青秀山夜樱之梦新春樱花灯会,将于1月21日在景区东区樱花……无网场景如何远程监控?看自带POE的蒲公英R300S路由器小前言:前段时间在各大短视频APP有这样一个视频非常火:小猪仔打架,被猪妈妈一下顶飞。记得当时就有人在评论区问,这个视频是怎么拍的?为什么镜头还会跟着动?其实这是开了移动侦……Laravel多表认证身份验证是任何Web应用程序的重要组成部分,Laravel通过其内置的身份验证功能使其易于实现。但是,如果您有多种用户类型,每种类型在数据库中都有自己的表怎么办?在这种情况下,……一把牌打得稀烂之后,你是继续熬下去还是转身离开?我们做事情的时候,总是提到尽人事、听天命。因为我们信命,而是我们知道,哪怕自己努力了,也不一定最终达到自己的目的。甚至有好多时候,明明我们非常努力,现在却仍过得是一……做一个有才情的女子你若是一朵花盛开时自会蝴蝶阵阵女孩子一定要好好读书,不论是专科还是本科,选择一个好就业或喜爱的专业,将来有一份体面的工作,这样将来你若爱上一位优秀的男孩,你也可以体体面面……紫光股份涨停,全天成交额超37亿元,机构大幅买入4月3日,紫光股份涨停,截至收盘,报32。22元,涨停板上封单逾3万手,全天成交额超37亿元,换手率4。07。交易所公布的盘后数据显示,两机构合计买入1。39亿元,深股通……有一种花叫满天星,你们知道吗?有一种花叫满天星,它的花语是:我甘愿做配角,瞒着所有人爱你;我携满天星辰以赠你,仍觉满天星辰不及你各种颜色的花语:1。粉色满天星:不能……图文视频冬奥健儿在天安门广场宣誓出征中央纪委国家监委网站聂新鑫黄秋霞李灵娜自天安门广场报道1月25日清晨,北京冬奥会中国体育代表团的100多名运动员和教练员代表,来到天安门广场观看升国旗仪式,并宣誓出征。武……找寻文旅产业突破口日前,琴澳旅游业务联盟成立,该联盟将联合澳门、珠海横琴旅游界共同开发客源市场、共同打造一程多站旅游产品体系、共同建设面向国际的旅游目的地。今年以来,在广州、珠海、澳门等多……负翁绿地的自救之路头部房企中,有位最顽强的负翁,绿地。虽然一直被资金链断裂、项目停工等负面新闻缠绕,甚至被气急败坏的乙方们在媒体上公然喊话,但绿地并没有率先成为暴雷房企。5月27日,……易建联为何无法立足NBA?一共赚了多少钱?易建联1987年10月27日出生于中国广东省江门市鹤山市,身高2。13米,中国职业篮球运动员,司职大前锋中锋,现效力于CBA广东东莞大益队。易建联是中国唯一一位全程在现场……
杜海涛沈梦辰结婚了,怎么还在被说风凉话?爱惨了杜海涛的沈梦辰,心愿终于达成。今天,有网友爆出杜海涛和沈梦辰在长沙的开福区民政局领证了。具体时间是2月16日,昨天刚领,结婚证还是热的。两口子被爆领证后……AMD99美元R33100液氮超频至5。9GHzIT之家5月8日消息根据外媒WCCFTECH的报道,超频高手TSAIK已经将Ryzen33100进行了超频测试,在液氮散热下实现了全核5。9GHz。据介绍,在液氮散热下,……金句推荐死亡不是真的逝去,遗忘才是永恒的消亡。《寻梦环游记》推荐理由:慢慢长大的过程中,家人也在一天天变老。我的奶奶生病了,甚至忘记我们是谁到处乱跑,可她却依然……宏碁非凡S5抗菌笔记本开卖11代酷睿,6499元起IT之家10月2日消息9月30日,宏碁发布了非凡S5触控屏超轻薄本,采用了抗菌设计,搭载了11代酷睿处理器,配备了14英寸触控屏,重量只有1kg,售价6499元起,今天正式开卖……最不合理的副本!山海神迹生死挑战顺利PK以嘻哈部落游戏平台为代表的《山海神迹》上上古战争为主题的2。5D网游将于8月12日开启。《山海神迹》生死挑战赛最不讲理的文案,让我们来学习一下被一群人单挑的滋味。生死挑战……ThinkPadX1Carbon2021曝光1610屏,散热IT之家10月7日消息今年6月份,ThinkPadX1CarbonYoga2020开售,搭载了i510210U和i710710U处理器,9999元起。现在,ThinkPadX1……AMD发布肾上腺素19。11。1驱动支持荒野大镖客救赎2IT之家11月5日消息AMD今天发布了新版的肾上腺素显卡驱动19。11。1。新版本修复了很多bug,最重要的是支持了《荒野大镖客:救赎2》。AMD新版的肾上腺素显卡驱动1……糖友吃饭加上它,缓解饥饿感减少血糖波动糖友经常饿的心慌有糖友咨询我,他经常在上午11点左右、也就是在午饭前饿得心慌的不行;虽然还没到饭点,但必须赶紧吃点东西才能缓过来。问我这是怎么回事?这是个较为普遍的……请回答,西科2022!2022,我们即将走完从春秋到冬夏,从日出到日暮光阴流转,许多故事在西科上演路过的风景,经历过的往事我们用文字记录用相机定格岁月深长,万物有……英伟达霍珀架构显卡曝光,采用MCM多芯片封装IT之家11月17日消息根据WCCFTECH的报道,英伟达霍珀(Hopper)架构显卡曝光,采用了MCM多芯片封装。图自WCCFTECH据介绍,英伟达霍珀(Hopp……英伟达GTX1650Super配置曝光TDP升至100W,性IT之家10月27日消息根据VideoCardz的报道,英伟达已经确认GeForceGTX1650Super显卡将于下月推出,现在这款显卡的规格也曝光了,一起来看一下吧。……NBA联盟前五超巨名单出炉!库里第四,詹姆斯第三,字母哥第一今年的NBA已经成立了75周年,因此,NBA联盟发布一份有史以来排名前75位的球员名单,以及联盟历史上其他伟大时刻的名单。接下来分大家分析前五名的超级巨星:第五名:卢卡东……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网