基于Python編寫(xiě)簡(jiǎn)易版的天天跑酷游戲的示例代碼
寫(xiě)出來(lái)的效果圖就是這樣了:

下面就更新一下全部的代碼吧
還是老樣子先定義
import?pygame,sys import?random
寫(xiě)一下游戲配置
width?=?1200????????????#窗口寬度 height?=?508????????????#窗口高度 size?=?width,?height??? score=None??????????????#分?jǐn)?shù) myFont=myFont1=None?????#字體 surObject=None??????????#障礙物圖片????????? surGameOver=None????????#游戲結(jié)束圖片 bg=None?????????????????#背景對(duì)象 role=None???????????????#人物對(duì)象 object=None?????????????#障礙物對(duì)象???????? objectList=[]???????????#障礙物對(duì)象數(shù)組 clock=None??????????????#時(shí)鐘 gameState=None??????????#游戲狀態(tài)(0,1)表示(游戲中,游戲結(jié)束)
寫(xiě)人物
class?Role:?#人物 ????def?__init__(self,surface=None,y=None): ????????self.surface=surface ????????self.y=y ????????self.w=(surface.get_width())/12 ????????self.h=surface.get_height()/2 ????????self.currentFrame=-1 ????????self.state=0????????#0代表跑步狀態(tài),1代表跳躍狀態(tài),2代表連續(xù)跳躍 ????????self.g=1????????????#重力加速度 ????????self.vy=0???????????#y軸速度??????? ????????self.vy_start=-20???#起跳開(kāi)始速度 ????def?getRect(self): ????????return?(0,self.y+12,self.w,self.h)
寫(xiě)障礙物
class?Object:??#障礙物 ????def?__init__(self,surface,x=0,y=0): ????????self.surface=surface ????????self.x=x ????????self.y=y ????????self.w=surface.get_width() ????????self.h=surface.get_height() ????????self.currentFrame=random.randint(0,6) ????????self.w?=?100 ????????self.h?=?100 ????def?getRect(self): ????????return?(self.x,self.y,self.w,self.h) ????def?collision(self,rect1,rect2): ????????#碰撞檢測(cè) ????????if?(rect2[0]>=rect1[2]-20)?or?(rect1[0]+40>=rect2[2])or?(rect1[1]+rect1[3]<rect2[1]+20)?or?(rect2[1]+rect2[3]<rect1[1]+20): ????????????return?False ????????return?True
寫(xiě)背景
class?Bg:???#背景 ????def?__init__(self,surface): ????????self.surface=surface ????????self.dx=-10 ????????self.w=surface.get_width() ????????self.rect=surface.get_rect()
def?initGame():
????????
????global?bg,role,clock,gameState,surObject,surGameOver,score,myFont,myFont1,objectList
????#分?jǐn)?shù)初始化
????score=0
????#初始化
????objectList=[]
????#加載字體
????myFont=pygame.font.Font("./freesansbold.ttf",32)
????myFont1=pygame.font.Font("./freesansbold.ttf",64)???
????#?創(chuàng)建時(shí)鐘對(duì)象?(可以控制游戲循環(huán)頻率)
????clock?=?pygame.time.Clock()
????#初始化游戲狀態(tài)
????gameState=0
????#游戲背景
????surBg=pygame.image.load("image/bg.bmp").convert_alpha()
????bg=Bg(surBg)
????#結(jié)束畫(huà)面
????surGameOver=pygame.image.load("image/gameover.bmp").convert_alpha()
????#人物圖片
????surRole=pygame.image.load("image/role.png").convert_alpha()??
????role=Role(surRole,508-85)
????#障礙物圖片
????surObject=pygame.image.load("image/object.png").convert_alpha()??
def?addObject():
????global?surObject,object,objectList,object
????rate=4
????#是否生成障礙物
????if?not?random.randint(0,300)<rate:
????????return
????y=random.choice([height-100,height-200,height-300,height-400])
????object=Object(surObject,width+40,y)
????objectList.append(object)
def?updateLogic():
????global?gameState,score
????#鍵盤(pán)事件處理
????for?event?in?pygame.event.get():
????????if?event.type?==?pygame.QUIT:
?????????????sys.exit()
????????elif?event.type==pygame.KEYDOWN:
????????????#空格鍵跳躍
????????????if?gameState==0:
????????????????if?event.key==pygame.K_SPACE:
????????????????????if?role.state==0:
????????????????????????role.state=1
????????????????????????role.vy=role.vy_start
????????????????????elif?role.state==1:
????????????????????????role.state=2
????????????????????????role.vy=role.vy_start
????????????elif?gameState==1:
????????????????if?event.key==pygame.K_SPACE:
????????????????????#重新開(kāi)始游戲
????????????????????initGame()
????????????????????
????if?gameState==0:
????????#背景的移動(dòng)???
????????bg.dx+=10
????????if?bg.dx==1200:
????????????bg.dx=0?
????????????
????????#人物的移動(dòng)??
????????if?role.state==0:????
????????????role.currentFrame+=1
????????????if?role.currentFrame==12:
????????????????role.currentFrame=0??
????????else:
????????????role.y+=role.vy
????????????role.vy+=role.g?
????????????if?role.y>=508-85:
????????????????role.y=508-85
????????????????role.state=0
????????#障礙物的移動(dòng)
????????addObject()
????????
????????for?object?in?objectList:
????????????object.x-=10?????#障礙物移動(dòng)
????????????#?障礙物超出屏幕,移除障礙物
????????????if?object.x+object.w<=0:
????????????????objectList.remove(object)
????????????????score+=10????#避開(kāi)障礙物,加10分
????????????????print("移除了一個(gè)目標(biāo)")???
????????????#碰撞檢測(cè)
????????????if?object.collision(role.getRect(),object.getRect()):
????????????????if(object.currentFrame==6):
????????????????????objectList.remove(object)
????????????????????score+=100??#吃金幣加100分
????????????????????print(score)
????????????????????print("吃了一個(gè)金幣")
????????????????else:?
????????????????????gameState=1???#游戲失敗
????????????????????print("發(fā)生了碰撞!")
ok啦,這就是這個(gè)天天酷跑的全部代碼啦。
到此這篇關(guān)于基于Python編寫(xiě)簡(jiǎn)易版的天天跑酷游戲的示例代碼的文章就介紹到這了,更多相關(guān)Python跑酷游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python新建用戶(hù)并產(chǎn)生隨機(jī)密碼過(guò)程解析
這篇文章主要介紹了基于Python新建用戶(hù)并產(chǎn)生隨機(jī)密碼過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
用python寫(xiě)測(cè)試數(shù)據(jù)文件過(guò)程解析
這篇文章主要介紹了用python寫(xiě)測(cè)試數(shù)據(jù)文件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
解決CentOS下ImportError: No module named &a
這篇文章主要介紹了解決CentOS下ImportError: No module named '_sqlite3'的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Python機(jī)器學(xué)習(xí)之實(shí)現(xiàn)模糊照片人臉恢復(fù)清晰
GFPGAN是騰訊開(kāi)源的人臉修復(fù)算法,它利用預(yù)先訓(xùn)練好的面部?GAN(如?StyleGAN2)中封裝的豐富和多樣的先驗(yàn)因素進(jìn)行盲臉?(blind?face)修復(fù)。這篇文章主要為大家介紹通過(guò)GFPGAN實(shí)現(xiàn)模糊照片人臉恢復(fù)清晰,需要的朋友可以參考一下2021-12-12
解決pip安裝報(bào)錯(cuò)required?to?install?pyproject.toml-based?projec
這篇文章主要介紹了解決pip安裝報(bào)錯(cuò)required?to?install?pyproject.toml-based?projects問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

