python实现简单flappy bird
本文实例为大家分享了python实现flappybird的简单代码,供大家参考,具体内容如下
importpygame frompygame.localsimport* fromsysimportexit importrandom #屏幕宽度 SCREENWIDTH=288 #屏幕高度 SCREENHEIGHT=512 IMAGES={} #背景图片地址 BACKGROUND_PATH='back_ground.png' PIPE_PATH='pipe.png' BASE_PATH='base.png' PLAYER_PATH=( 'bird2_0.png', 'bird2_1.png', 'bird2_2.png', ) #初始化 pygame.init() #创建窗口 SCREEN=pygame.display.set_mode((SCREENHEIGHT,SCREENHEIGHT)) #设置窗口标题 pygame.display.set_caption("FlappyBird") #加载图片,透明用convert_alpha,不透明用convert IMAGES['background']=pygame.image.load(BACKGROUND_PATH).convert() IMAGES['base']=pygame.image.load(BASE_PATH).convert_alpha() IMAGES['bird']=( pygame.image.load(PLAYER_PATH[0]).convert_alpha(), pygame.image.load(PLAYER_PATH[1]).convert_alpha(), pygame.image.load(PLAYER_PATH[2]).convert_alpha(), ) IMAGES['pipe']=( pygame.transform.rotate(pygame.image.load(PIPE_PATH).convert_alpha(),180), pygame.image.load(PIPE_PATH).convert_alpha() ) BASEY=SCREENHEIGHT*0.82 #设置帧率 FPS=30 FPSCLOCK=pygame.time.Clock() PIPE_WIDTH=IMAGES['pipe'][0].get_width() PIPE_HEIGHT=IMAGES['pipe'][0].get_height() PLAYER_WIDTH=IMAGES['bird'][0].get_width() PLAYER_HEIGHT=IMAGES['bird'][0].get_height() PIPEGAPSIZE=100#两个水管之间的距离 x=SCREENWIDTH//2 y=SCREENHEIGHT//2 move_x=0 move_y=0 flap=0#小鸟初始状态 pipeVelX=-4#管道x方向的速度 playerVelY=0#小鸟y方向的初速度 playerMaxVelY=10#小鸟y方向的最大速度 playerMinVelY=-8#小鸟y方向的最小速度 playerAccY=2#小鸟y方向的下降加速度 playerFlapAcc=-3#小鸟y方向的上升加速度 playerFLapped=False#当小鸟飞的时候为真 playery=int((SCREENHEIGHT-PLAYER_HEIGHT)/2) #随机移动柱子 defgetRandomPipe(): #两个水管之间的距离有如下变量 gapYs=[20,30,40,50,60,70,80,90] index=random.randint(0,len(gapYs)-1) gapY=gapYs[index] gapY+=int(BASEY*0.2) #水管x坐标 pipeX=SCREENWIDTH+10 return[ {'x':pipeX,'y':gapY-PIPE_HEIGHT},#上面水管的左上角位置 {'x':pipeX,'y':gapY+PIPEGAPSIZE},#下面水管的左上角位置 ] newPipel=getRandomPipe() upperPipes=[ {'x':SCREENWIDTH,'y':newPipel[0]['y']} ] lowerPipes=[ {'x':SCREENWIDTH,'y':newPipel[1]['y']} ] whileTrue: foreventinpygame.event.get(): ifevent.type==QUIT: exit() elifevent.type==KEYDOWN: ifevent.key==K_LEFT: move_x=-3 elifevent.key==K_RIGHT: move_x=3 elifevent.key==K_UP: move_y=-3 elifevent.key==K_DOWN: move_y=3 elifevent.type==KEYUP: move_x=0 move_y=0 x=x+move_x y=y+move_y #防止冲出边界 ifx>SCREENWIDTH: x=0 elifx<0: x=SCREENWIDTH ify>SCREENHEIGHT: y=0 elify<0: y=SCREENHEIGHT #贴图在左上角 SCREEN.blit(IMAGES['background'],(0,0))#背景 #显示水管 foruPipe,lPipeinzip(upperPipes,lowerPipes): SCREEN.blit(IMAGES['pipe'][0],(uPipe['x'],uPipe['y'])) SCREEN.blit(IMAGES['pipe'][1],(lPipe['x'],lPipe['y'])) #放小鸟 SCREEN.blit(IMAGES['bird'][flap],(x,y)) flap=flap+1 ifflap%3==0: flap=0 foruPipe,lPipeinzip(upperPipes,lowerPipes): uPipe['x']+=pipeVelX lPipe['x']+=pipeVelX #当水管移动到某一位置的时候,生成新的水管 if0以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。