python实现贪吃蛇游戏源码
本文实例为大家分享了python实现贪吃蛇的具体代码,供大家参考,具体内容如下
importpygame importsys importrandom SCREEN_X=600 SCREEN_Y=600 classSnake(object): def__init__(self): self.direction=pygame.K_RIGHT self.body=[] foriinrange(5): self.addnode() defaddnode(self): left,top=(0,0) ifself.body: left,top=(self.body[0].left,self.body[0].top) node=pygame.Rect(left,top,25,25) ifself.direction==pygame.K_RIGHT: node.left+=25 elifself.direction==pygame.K_LEFT: node.left-=25 elifself.direction==pygame.K_UP: node.top-=25 elifself.direction==pygame.K_DOWN: node.top+=25 self.body.insert(0,node) defdelnode(self): self.body.pop() defisdead(self): ifself.body[0].xnotinrange(SCREEN_X): returnTrue ifself.body[0].ynotinrange(SCREEN_Y): returnTrue ifself.body[0]inself.body[1:]: print('inbody') returnTrue returnFalse defmove(self): self.addnode() self.delnode() defchangeddirection(self,curkey): LR=[pygame.K_LEFT,pygame.K_RIGHT] UD=[pygame.K_DOWN,pygame.K_UP] ifcurkeyinLR+UD: if(curkeyinLR)and(self.directioninLR): return if(curkeyinUD)and(self.directioninUD): return self.direction=curkey classFood(object): def__init__(self): self.rect=pygame.Rect(-25,0,25,25) defremove(self): self.rect.x=-25 defset(self): ifself.rect.x==-25: allpos=[] forposinrange(25,SCREEN_X-25,25): allpos.append(pos) self.rect.left=random.choice(allpos) self.rect.top=random.choice(allpos) print(self.rect) defshow_text(screen,pos,text,color,font_bold=False,font_size=60,font_italic=False): cur_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) screen.blit(text_fmt,pos) defmain(): pygame.init() screen_size=(SCREEN_X,SCREEN_Y) screen=pygame.display.set_mode(screen_size) pygame.display.set_caption('Snake') clock=pygame.time.Clock() scores=0 isdead=False snake=Snake() food=Food() whileTrue: foreventinpygame.event.get(): ifevent.type==pygame.QUIT: sys.exit() ifevent.type==pygame.KEYDOWN: #print(event) #pressed_keys=pygame.key.get_pressed() #ifpressed_keys.count(1)>1: #continue print(event.key) snake.changeddirection(event.key) ifevent.key==pygame.K_SPACEandisdead: returnmain() screen.fill((255,255,255)) ifnotisdead: scores+=1 snake.move() forrectinsnake.body: pygame.draw.rect(screen,(20,220,39),rect,0) isdead=snake.isdead() ifisdead: show_text(screen,(100,200),'youdead!',(227,29,18),False,100) show_text(screen,(150,260),'pressspacetotryagain...',(0,0,22),False,30) iffood.rect==snake.body[0]: scores+=50 food.remove() snake.addnode() food.set() pygame.draw.rect(screen,(136,0,21),food.rect,0) show_text(screen,(50,500),'Scores:'+str(scores),(223,223,223)) pygame.display.update() clock.tick(5) if__name__=="__main__": main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。