当前位置: 首页 > 后端技术 > Python

用Python实现儿时小游戏贪吃蛇

时间:2023-03-26 11:53:02 Python

贪吃蛇作为一款经典游戏,早在1976年就发布了,第一次接触是在父母的诺基亚手机上。蛇的历史虽然比较久远,但是它的生命力却非常顽强,经久不衰。重要的原因是游戏厂商不断对其进行更新迭代。现在,这款游戏在游戏场景和规则方面都变得非常丰富。下面我们就来看看如何通过Python简单的实现这个小游戏。规则必须有游戏主界面,贪吃蛇,食物,可以控制贪吃蛇的移动,获取食物。吃完食物后,贪吃蛇增加身长和得分,食物消失并随机生成新的食物。贪吃蛇触碰周围当边界或者自己的身体,游戏结束环境操作系统:WindowsPython版本:3.6涉及模块:sys,random,pygame实现首先安装第三方库pygame,使用pipinstallpygame即可.?游戏主界面SCREEN_X=500SCREEN_Y=500screen_size=(SCREEN_X,SCREEN_Y)screen=pygame.display.set_mode(screen_size)pygame.display.set_caption('贪吃蛇')?贪吃蛇初化def__init__(self):self.dirction=pygame.K_RIGHTself.body=[]移动defaddNode(self):left,top=(0,0)ifself.body:left,top=(self.body[0].left,self.body[0].top)node=pygame.Rect(left,top,20,20)如果self.dirction==pygame.K_LEFT:node.left-=20elifself.dirction==pygame.K_RIGHT:node.left+=20elifself.dirction==pygame.K_UP:node.top-=20elifself.dirction==pygame.K_DOWN:node.top+=20self.body.insert(0,node)defdelNode(self):自我.body.pop()改变方向defchangeDirection(self,curkey):LR=[pygame.K_LEFT,pygame.K_RIGHT]UD=[pygame.K_UP,pygame.K_DOWN]ifcurkeyinLR+UD:if(curkeyinLR)and(self.dirctioninLR):returnif(curkeyinUD)and(self.dirctioninUD):returnself.dirction=curkeydeathjudgmentdefisDead(self):#如果self.body[0].x不在范围内就撞墙了(SCREEN_X):returnTrueifself.body[0].y不在范围内(SCREEN_Y)):returnTrue#打自己ifself.body[0]inself.body[1:]:returnTruereturnFalse?putfoodinfooddefset(self):ifself.rect.x==-20:allpos=[]forposinrange(20,SCREEN_X-20,20):allpos.append(pos)self.rect.left=random.choice(allpos)self.rect.top=random.choice(allpos)print(self.rect)Eatfooddefremove(self):self.rect.x=-20?文字显示方式defshow_text(screen,pos,text,color,font_bold=False,font_size=30,font_italic=False):#设置文字sizecur_font=pygame.font.SysFont("宋体",font_size)#粗体cur_font.set_bold(font_bold)#斜体cur_font.set_italic(font_italic)#设置内容text_fmt=cur_font.render(text,1,color)#绘制文本屏幕.blit(text_fmt,pos)显示分数show_text(screen,(50,400),'scores:'+str(scores),(103,213,213))显示死亡提示show_text(screen,(150,50),'GAMEOVER',(227,29,18),False,50)show_text(screen,(140,100),"Pressspacetotryagain",(0,0,22),False,30)?吃食物时,贪吃的蛇吃掉食物,增加蛇的长度和分数,并且食物消失了,再放食物iffood.rect==snake.body[0]:scores+=1food.remove()snake.addNode()#Putfoodfood.set()?最后的效果就是打包好了使用pyinstaller打包,具体实现参考童年游戏俄罗斯方块中使用Python实现打包。可以在公众号Python小二后台回复g2获取源码。