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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。