pygame wormy 贪吃蛇,pygamewormy,import pygam


import pygame,sys,randomfrom pygame.locals import*FPS = 10winx = 640winy = 480cellsize = 20assert (winx%cellsize == 0 and winy%cellsize == 0),'cell number needs to be interger'cellx = int(winx/cellsize)celly = int(winy/cellsize)red = (255,0,0)green = (0,255,0)darkgreen = (0,155,0)gray = (40,40,40)white = (255,255,255)black = (0,0,0)left = 'left'right = 'right'down = 'down'up = 'up'head = 0def main():    global fpsclock,disp    pygame.init()    disp = pygame.display.set_mode((winx,winy))    pygame.display.set_caption('wormy')    disp.fill(black)        fpsclock = pygame.time.Clock()    startanimation()    while True:        rungame()        gameover()def rungame():    global FPS    direction = right    startx = random.randint(5,cellx - 6)    starty = random.randint(5,celly - 6)    wormy = [{'x': startx, 'y': starty},             {'x': startx-1, 'y': starty},             {'x': startx-2, 'y': starty}]    apple = randomapple()    while True:        for event in pygame.event.get():            if event.type == QUIT:                terminal()            elif event.type == KEYDOWN:                if event.key == K_LEFT and direction!=right:                    direction = left                elif event.key == K_RIGHT and direction!=left:                    direction = right                elif event.key == K_UP and direction!=down:                    direction = up                elif event.key == K_DOWN:                    direction = down                elif event.key == K_ESCAPE:                    terminal()        if wormy[head]['x'] == cellx or wormy[head]['x'] == -1 or wormy[head]['y'] == celly or wormy[head]['y'] == -1:            return        for wormybody in wormy[1:]:            if wormybody['x'] == wormy[head]['x'] and wormybody['y'] == wormy[head]['y']:                return        if wormy[head]['x'] == apple['x'] and  wormy[head]['y'] == apple['y']:            apple = randomapple()            FPS+=1        else:            del wormy[-1]        if direction == up:            newhead = {'x':wormy[head]['x'],'y':wormy[head]['y']-1}        if direction == down:            newhead = {'x':wormy[head]['x'],'y':wormy[head]['y']+1}        if direction == left:            newhead = {'x':wormy[head]['x']-1,'y':wormy[head]['y']}                    if direction == right:            newhead = {'x':wormy[head]['x']+1,'y':wormy[head]['y']}        wormy.insert(0,newhead)        disp.fill(black)        drawline()        drawwormy(wormy)        drawapple(apple)        drawscore(len(wormy)-3)        pygame.display.update()        fpsclock.tick(FPS)def drawapple(coords):    pygame.draw.rect(disp,red,(coords['x']*cellsize,coords['y']*cellsize,cellsize,cellsize))def randomapple():    applex = random.randint(0,cellx-1)    appley = random.randint(0,celly-1)    return {'x':applex,'y':appley}def drawwormy(wormy):    for board in wormy:        x = board['x']*cellsize        y = board['y']*cellsize        pygame.draw.rect(disp,darkgreen,(x,y,cellsize,cellsize))        pygame.draw.rect(disp,green,(x+4,y+4,cellsize-8,cellsize-8))def drawline():    for i in range(cellx):        pygame.draw.line(disp,gray,(i*cellsize,0),(i*cellsize,winy))    for j in range(celly):        pygame.draw.line(disp,gray,(0,j*cellsize),(winx,j*cellsize))def terminal():    pygame.quit()    sys.exit()def checkforpress():    if len(pygame.event.get(QUIT))> 0 :        terminal()    keypress = pygame.event.get(KEYUP)    if len(keypress) == 0:        return None    elif len(keypress)>0:        if keypress[0].key == K_ESCAPE:            terminal()        return keypress[0].keydef drawkey():    basicfont2 = pygame.font.Font('freesansbold.ttf',20)    textsurf = basicfont2.render('press a key to play',1,gray)    textrect = textsurf.get_rect()    textrect.topleft = (winx-200,winy-50)    disp.blit(textsurf,textrect)def startanimation():    basicfont1 = pygame.font.Font('freesansbold.ttf',100)    degree1 = 0    degree2 = 0    w1surf = basicfont1.render('wormy',1,white,darkgreen)    w2surf = basicfont1.render('wormy',1,green)    while True:        disp.fill(black)        drawkey()        rotate1surf = pygame.transform.rotate(w1surf,degree1)        rotate1rect = rotate1surf.get_rect()        rotate1rect.center = (winx-320,winy-240)        rotate2surf = pygame.transform.rotate(w2surf,degree2)        rotate2rect = rotate2surf.get_rect()        rotate2rect.center = (winx-320,winy-240)        disp.blit(rotate1surf,rotate1rect)        disp.blit(rotate2surf,rotate2rect)        degree1+= 3        degree2+= 7        if checkforpress():            pygame.event.get()            return        pygame.display.update()        fpsclock.tick(FPS)def drawscore(score):    basicfont3 = pygame.font.Font('freesansbold.ttf',20)    textsurf = basicfont3.render('score: %d'%score,1,white)    textrect = textsurf.get_rect()    textrect.topleft = (winx-100,10)    disp.blit(textsurf,textrect)def gameover():    basicfont4 = pygame.font.Font('freesansbold.ttf',100)    gamesurf = basicfont4.render('Game',1,white)    gamerect = gamesurf.get_rect()    gamerect.topleft = (180,80)    oversurf = basicfont4.render('Over',1,white)    overrect = oversurf.get_rect()    overrect.topleft = (200,200)    disp.blit(gamesurf,gamerect)    disp.blit(oversurf,overrect)    drawkey()    pygame.display.update()    pygame.time.wait(500)    checkforpress()    while True:        if checkforpress():            pygame.event.get()            returnif __name__ =='__main__':    main()

评论关闭