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