python贪吃蛇程序_Python贪吃蛇

#基于pygame设计的贪吃蛇。

importpygame,sys,random

SCREENx= 900SCREENy= 900

classSnake():

#蛇类def __init__(self):

self.dirction=pygame.K_RIGHT

self.body=[]for x in range(2):

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)if self.dirction ==pygame.K_LEFT:

node.left-= 25

elif self.dirction ==pygame.K_RIGHT:

node.left+= 25

elif self.dirction ==pygame.K_UP:

node.top-= 25

elif self.dirction ==pygame.K_DOWN:

node.top+= 25self.body.insert(0, node)defdelnode(self):

self.body.pop()defisdead(self):if self.body[0].x not inrange(SCREENx):returnTrueif self.body[0].y not inrange(SCREENy):returnTrueif self.body[0] in self.body[1:]:returnTruereturnFalsedefmove(self):

self.addnode()

self.delnode()defchangedirection(self, curkey):

LR=[pygame.K_LEFT, pygame.K_RIGHT]

UD=[pygame.K_UP, pygame.K_DOWN]if curkey in LR +UD:if (curkey in LR) and (self.dirction inLR):return

if (curkey in UD) and (self.dirction inUD):returnself.dirction=curkeyclassFood:

#食物类def __init__(self):

self.rect= pygame.Rect(-25, 0, 25, 25)defremove(self):

self.rect.x= -25

defset(self):if self.rect.x == -25:

allpos=[]for pos in range(25, SCREENx - 25, 25):

allpos.append(pos)

self.rect.left=random.choice(allpos)

self.rect.top=random.choice(allpos)#print(self.rect)

def show_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)def main(size=None):

pygame.init()

Ssize=(SCREENx, SCREENy)

screen=pygame.display.set_mode(Ssize)

pygame.display.set_caption(‘Snake‘)

clock=pygame.time.Clock()

scores=0

isdead=False

snake=Snake()

food=Food()whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:

sys.exit()if event.type ==pygame.KEYDOWN:

snake.changedirection(event.key)if event.key == pygame.K_SPACE andisdead:returnmain()

screen.fill((10, 10, 10))if notisdead:

snake.move()for rect insnake.body:

pygame.draw.rect(screen, (255, 255, 255), rect, 0)

isdead=snake.isdead()ifisdead:

show_text(screen, (225, 400), ‘press space to try again...‘, (225, 225, 225), False, 50)if food.rect ==snake.body[0]:

scores+= 50food.remove()

snake.addnode()

food.set()

pygame.draw.rect(screen, (255, 165, 50), food.rect, 0)

show_text(screen, (50, SCREENy-100), str(scores), (225, 225, 225))

pygame.display.update()

clock.tick(15)if __name__ == ‘__main__‘:

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值