利用python实现flappy bird 游戏(完整代码)_第1页
利用python实现flappy bird 游戏(完整代码)_第2页
利用python实现flappy bird 游戏(完整代码)_第3页
利用python实现flappy bird 游戏(完整代码)_第4页
利用python实现flappy bird 游戏(完整代码)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第利用python实现flappybird游戏(完整代码)pilar_pos=[384,random.randint(130,250)]

new_pilar=Pilar(pilar_image_up,pilar_image_down,pilar_pos)

pilar_set.add(new_pilar)

ifpilar_frequency=1000:

pilar_frequency=0

flag=(-1)*flag

#移动柱子

forpilarinpilar_set:

pilar.move()

ifcollide_circle(pilar,mybird):#碰撞检测代码

mybird.is_hit=True

forpilarinpilar_set:

pilar.stop()

ifpilar.pilar1_rect.right0:

pilar_set.remove(pilar)

#小鸟降落

mybird.SelfMoveDown()

#绘制背景

screen.fill(0)

ifflag==1:

screen.blit(background_day,(0,0))

else:

screen.blit(background_night,(0,0))

#绘制柱子

forpilarinpilar_set:

screen.blit(pilar.pilar1_image,pilar.pilar1_rect)

screen.blit(pilar.pilar2_image,pilar.pilar2_rect)

#绘制地面

screen.blit(ground,(0,384))

#绘制玩家小鸟

bird_frequency+=1

ifnotmybird.is_hit:#未发生碰撞

score+=10

screen.blit(mybird.image[mybird.image_index],mybird.rect)

mybird.image_index=bird_frequency%3

else:#发生碰撞

running=False

mybird.SelfDiedDown()

screen.blit(mybird.image[0],mybird.rect)

has_log=False

whilenotrunningandmybird.is_downtoground:#画面切换到结束界面

screen.blit(gameover_image,(64,30))

screen.blit(medal_blackball_image,(42,100))

screen.blit(restart_image,(122,270))

ifnothas_log:

bestscore,index=get_history_record(score/100)#获取历史记录情况

printscore/100

printbestscore,index

has_log=True

screen.blit(medal_images[index],(75,160))#要读取之前保存的信息,

x,y=pygame.mouse.get_pos()

#目前得分

score_font=pygame.font.Font(None,36)

score_text=score_font.render(str(score/100),True,(255,255,255))

text_rect=score_text.get_rect()

text_rect.midtop=[290,145]

screen.blit(score_text,text_rect)

#历史最佳得分

score_font=pygame.font.Font(None,36)

score_text=score_font.render(str(bestscore),True,(255,255,255))

text_rect=score_text.get_rect()

text_rect.midtop=[290,200]

screen.blit(score_text,text_rect)

foreventinpygame.event.get():

ifevent.type==pygame.QUIT:

pygame.quit()

exit()

elifevent.type==pygame.MOUSEBUTTONDOWN:

ify360andy280andx150andx240:#重新开始

pilar_set=pygame.sprite.Group()

mybird=Bird(bird_images,bird_pos)

score=0

running=True

pygame.display.update()

#绘制得分

score_font=pygame.font.Font(None,36)

score_text=score_font.render(str(score/100),True,(255,255,255))

text_rect=score_text.get_rect()

text_rect.midtop=[185,30]

screen.blit(score_text,text_rect)

#屏幕更新

pygame.display.update()

#绘制按键执行代码

key_pressed=pygame.key.get_pressed()

ifnotmybird.is_hit:

ifkey_pressed[K_w]orkey_pressed[K_UP]:

mybird.moveUp()

ifkey_pressed[K_s]orkey_pressed[K_DOWN]:

mybird.moveDown()

foreventinpygame.event.get():

ifevent.type==pygame.QUIT:

pygame.quit()

exit()

第二个文件,gamerole.py定义两个类,一个是柱子类,定义柱子的生成规则和移动规则一个是小鸟类,定义小鸟位置信息,加载图片信息以及小鸟的飞行控制

#-*-coding:utf-8-*-

CreatedonThuDec1500:27:172016

@author:LINJUNJI

importpygame

importrandom

SCREEN_WIDTH=384

SCREEN_HEIGHT=448

INTERVEL=120#两个障碍之间的间隔

UP_LIMIT=60

DOWN_LIMIT=360

classBird(pygame.sprite.Sprite):

def__init__(self,bird_imgs,init_pos):

pygame.sprite.Sprite.__init__(self)

self.image=bird_imgs

self.rect=self.image[0].get_rect()

self.rect.midbottom=init_pos

self.up_speed=5

self.down_speed=2

self.selfdown_speed=2

self.image_index=0#图片索引参数,控制小鸟飞行姿态变化

self.is_hit=False

self.is_downtoground=False

defSelfMoveDown(self):

self.rect.top+=self.selfdown_speed

defSelfDiedDown(self):

self.up_speed=0

self.down_speed=0

self.rect.bottom+=self.selfdown_speed*2

ifself.rect.bottom=400:

self.rect.bottom=400

self.is_downtoground=True

defmoveUp(self):

ifself.rect.top=0:

self.rect.top=0

else:

self.rect.top-=self.up_speed

defmoveDown(self):

ifself.rect.top=SCREEN_HEIGHT-self.rect.height:

self.rect.top=SCREEN_HEIGHT-self.rect.height

else:

self.rect.top+=self.down_speed

defmoveLeft(self):

ifself.rect.left=0:

self.rect.left=0

else:

self.rect.left-=self.speed

defmoveRight(self):

ifself.rect.left=SCREEN_WIDTH-self.rect.width:

self.rect.left=SCREEN_WIDTH-self.rect.width

else:

self.rect.left+=self.speed

classPilar(pygame.sprite.Sprite):

def__init__(self,pilar_image_up,pilar_image_down,init_pos):

pygame.sprite.Sprite.__init__(self)

self.pilar1_image=pilar_image_up

self.pilar2_image=pilar_image_down

self.pilar1_rect=self.pilar1_image.get_rect()

self.pilar2_rect=self.pilar2_image.get_rect()

self.pilar1_rect.bottomleft=init_pos

self.pilar2_rect.topleft=[init_pos[0],init_pos[1]+INTERVEL]

self.horizontal_speed=2#柱子平移的速度

self.vertical_speed=0.3#柱子上下移动的速度

self.direction=random.randint(0,1)#柱子上下移动的方向

defmove(self):

self.pilar1_rect.left-=self.horizontal_speed#柱子左右移动

self.pilar2_rect.left-=self.horizontal_speed

ifself.direction==1:#控制柱子上下移动

self.pilar1_rect.bottom+=self.vertical_speed

self.pilar2_rect.top+=self.vertical_speed

ifself.pilar2_rect.topDOWN_LI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论