利用python實現(xiàn)flappy bird 游戲(完整代碼)_第1頁
利用python實現(xiàn)flappy bird 游戲(完整代碼)_第2頁
利用python實現(xiàn)flappy bird 游戲(完整代碼)_第3頁
利用python實現(xiàn)flappy bird 游戲(完整代碼)_第4頁
利用python實現(xiàn)flappy bird 游戲(完整代碼)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第利用python實現(xiàn)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:#未發(fā)生碰撞

score+=10

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

mybird.image_index=bird_frequency%3

else:#發(fā)生碰撞

running=False

mybird.SelfDiedDown()

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

has_log=False

whilenotrunningandmybird.is_downtoground:#畫面切換到結(jié)束界面

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()

#繪制按鍵執(zhí)行代碼

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定義兩個類,一個是柱子類,定義柱子的生成規(guī)則和移動規(guī)則一個是小鳥類,定義小鳥位置信息,加載圖片信息以及小鳥的飛行控制

#-*-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#圖片索引參數(shù),控制小鳥飛行姿態(tài)變化

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論