基于Python編寫簡易版的天天跑酷游戲的示例代碼
更新時間:2022年03月23日 14:51:08 作者:Python小二
這篇文章主要介紹了如何利用Python編寫一個簡易版的天天跑酷游戲,文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下
寫出來的效果圖就是這樣了:
下面就更新一下全部的代碼吧
還是老樣子先定義
import?pygame,sys import?random
寫一下游戲配置
width?=?1200????????????#窗口寬度 height?=?508????????????#窗口高度 size?=?width,?height??? score=None??????????????#分數(shù) myFont=myFont1=None?????#字體 surObject=None??????????#障礙物圖片????????? surGameOver=None????????#游戲結(jié)束圖片 bg=None?????????????????#背景對象 role=None???????????????#人物對象 object=None?????????????#障礙物對象???????? objectList=[]???????????#障礙物對象數(shù)組 clock=None??????????????#時鐘 gameState=None??????????#游戲狀態(tài)(0,1)表示(游戲中,游戲結(jié)束)
寫人物
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???#起跳開始速度 ????def?getRect(self): ????????return?(0,self.y+12,self.w,self.h)
寫障礙物
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): ????????#碰撞檢測 ????????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
寫背景
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 ????#分數(shù)初始化 ????score=0 ????#初始化 ????objectList=[] ????#加載字體 ????myFont=pygame.font.Font("./freesansbold.ttf",32) ????myFont1=pygame.font.Font("./freesansbold.ttf",64)??? ????#?創(chuàng)建時鐘對象?(可以控制游戲循環(huán)頻率) ????clock?=?pygame.time.Clock() ????#初始化游戲狀態(tài) ????gameState=0 ????#游戲背景 ????surBg=pygame.image.load("image/bg.bmp").convert_alpha() ????bg=Bg(surBg) ????#結(jié)束畫面 ????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 ????#鍵盤事件處理 ????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: ????????????????????#重新開始游戲 ????????????????????initGame() ???????????????????? ????if?gameState==0: ????????#背景的移動??? ????????bg.dx+=10 ????????if?bg.dx==1200: ????????????bg.dx=0? ???????????? ????????#人物的移動?? ????????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 ????????#障礙物的移動 ????????addObject() ???????? ????????for?object?in?objectList: ????????????object.x-=10?????#障礙物移動 ????????????#?障礙物超出屏幕,移除障礙物 ????????????if?object.x+object.w<=0: ????????????????objectList.remove(object) ????????????????score+=10????#避開障礙物,加10分 ????????????????print("移除了一個目標")??? ????????????#碰撞檢測 ????????????if?object.collision(role.getRect(),object.getRect()): ????????????????if(object.currentFrame==6): ????????????????????objectList.remove(object) ????????????????????score+=100??#吃金幣加100分 ????????????????????print(score) ????????????????????print("吃了一個金幣") ????????????????else:? ????????????????????gameState=1???#游戲失敗 ????????????????????print("發(fā)生了碰撞!")
ok啦,這就是這個天天酷跑的全部代碼啦。
到此這篇關于基于Python編寫簡易版的天天跑酷游戲的示例代碼的文章就介紹到這了,更多相關Python跑酷游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決CentOS下ImportError: No module named &a
這篇文章主要介紹了解決CentOS下ImportError: No module named '_sqlite3'的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12解決pip安裝報錯required?to?install?pyproject.toml-based?projec
這篇文章主要介紹了解決pip安裝報錯required?to?install?pyproject.toml-based?projects問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05