sponsored links

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

導語

重磅訊息!木木子今天又要給大家介紹一款新遊戲啦!

期待不期待呀來我們先來看看是什麼遊戲讓大家這麼沸騰

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

《天天酷跑》這款遊戲有好幾年的歷史了,當初確實是十分火爆,還記得自己第一次接觸這款遊戲是在高考後的暑假,因為那時

個假期比較長,就去一家服裝店打工了,閒下來的時候店裡的人就在玩天天酷跑,為了能有話題聊就入坑了,後來發現還有不少

少年同學也都在玩,而且分數比自己高好多。現在算算大概過去六七年了,自己早已放棄天天酷跑了。

可能因為天天酷跑是自己接觸的第一款手遊吧,印象比較深刻——現在好不容易下載進去發現很多規則都改了,捂臉.jpg

完全不會操作了。這不?準備做一款Python版簡易的《天天跑酷》小遊戲,順便回一下童年撒!

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

小簡介:

《​天天酷跑》是騰訊移動遊戲平臺專為海量微信和手機QQ使用者量身打造的一款精品手機遊戲。

在沿襲傳統玩法的基礎上,特別加入了閃亮坐騎、萌動寵物等一系列心動設計,為玩家帶來最為得心應手的跑酷體驗。

隨時隨地與微信、QQ好友一起玩,搶佔排行榜、愛心送不停、高分炫出來!貼心互動讓你和好友親密無間,分享炫耀讓你備受

好友關注,成為酷跑達人!大聲告訴你的好友:跑酷從此不一樣!

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

​正文

本文是Pygame遊戲模組製作的《天天跑酷》小遊戲啦~

一、準備中

好啦!我們正式開始準備小遊戲所需要的素材、環境吧!

圖片素材:

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

環境安裝:

Python3.6、Pycharm2019(大部分版本都是可以執行的)、Pygame部分內建模組。

模組安裝:pip install -i https://pypi.douban.com/simple/ +模組名
複製程式碼

遊戲規則:

按空格鍵跳躍、按一次短跳躍、按二次長跳躍,中間會出現很多障礙物,還有相應的金幣等,遊戲失敗後按空格鍵重新開始。

二、遊戲步驟

1).遊戲初始化

  • 利用pygame建立特定大小的遊戲視窗。
  • 顯示遊戲的初始介面,提示使用者開始遊戲
  • 在遊戲介面中設定背景圖片,並顯示人物、障礙物和金幣等物體。

2).遊戲控制

  • 人物自動向前奔跑,按空格鍵控制人物跳躍。
  • 利用addObstacle函式建立障礙物。
  • 利用updateScreen函式不斷更新介面中物體的顯示。

3).碰撞檢測

  • 利用ListenKeyBoard函式監控使用者的鍵盤輸入,並檢測人物和障礙物金幣等是否碰撞。
  • 人物和障礙物碰撞:當檢測到人物和障礙物的位置資訊有交集時,判斷為碰撞,人物生命值減一,障礙物消滅。
  • 人物和金幣碰撞:當人物撞到金幣時,金幣消滅,得分+100。
  • 當人物成功躲避障礙物時,得分+10。
  • 利用judgeState函式來判斷遊戲是否結束。
  • 遊戲結束時顯示最終得分,並提示使用者按“Enter”鍵重新開始遊戲。

三、正式敲程式碼

import pygame,sys
import random

# 遊戲配置
width = 1200            #視窗寬度
height = 508            #視窗高度
size = width, height
score=None              #分數
myFont=myFont1=None     #字型
surObject=None          #障礙物圖片
surGameOver=None        #遊戲結束圖片
bg=None                 #背景物件
role=None               #人物物件
object=None             #障礙物物件
objectList=[]           #障礙物物件陣列
clock=None              #時鐘
gameState=None          #遊戲狀態(0,1)表示(遊戲中,遊戲結束)

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代表跑步狀態,1代表跳躍狀態,2代表連續跳躍
        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
    #分數初始化
    score=0
    #初始化
    objectList=[]
    #載入字型
    myFont=pygame.font.Font("./freesansbold.ttf",32)
    myFont1=pygame.font.Font("./freesansbold.ttf",64)
    # 建立時鐘物件 (可以控制遊戲迴圈頻率)
    clock = pygame.time.Clock()
    #初始化遊戲狀態
    gameState=0
    #遊戲背景
    surBg=pygame.image.load("image/bg.bmp").convert_alpha()
    bg=Bg(surBg)
    #結束畫面
    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("發生了碰撞!")

def updateView(screen):
    #背景的貼圖
    screen.blit(bg.surface,[-bg.dx,0])
    screen.blit(bg.surface,[1200-bg.dx,0])
    #分數的貼圖
    textSur=myFont.render("score:%d"%score, True, (128, 128, 128))
    screen.blit(textSur, (500,20))
    del textSur
    #人物的貼圖
    screen.blit(role.surface, [0, role.y], [int(role.currentFrame) * role.w, 0, role.w, role.h])
    #障礙物的貼圖
    for object in objectList:
        screen.blit(object.surface, [object.x, object.y], [int(object.currentFrame) * object.w, 0, object.w, object.h])   

def judgeState(screen):
    global gameState
    if gameState==0:
        updateView(screen)
        return
    elif gameState==1:
        screen.blit(surGameOver,[0,0])
        textSur = myFont1.render("GameOver Score:%d"%score, True, (255, 0, 0))
        screen.blit(textSur, (width/2-350, height/2+150))

def main():

    pygame.init()
    screen = pygame.display.set_mode(size)
    pygame.display.set_caption('天天跑酷——CSDN:顧木子吖')
    initGame()
    screen.blit(bg.surface,[0,0])
    while True:
        #設定時鐘頻率
        clock.tick(60)  

        judgeState(screen)
        updateLogic()
        pygame.display.flip()

main()
複製程式碼

四、效果展示

截圖展示——

遊戲開始:

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

跳躍、障礙物:

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

​遊戲結束:

遊戲全面“入侵”生活:Python釋出“酷跑+”計劃,眼饞了

分類: 健身
時間: 2021-12-03

相關文章

秋季多練陰瑜伽體式,減壓助眠,緩解疲憊,堅持練習才有效果

秋季多練陰瑜伽體式,減壓助眠,緩解疲憊,堅持練習才有效果
秋季,在我們傳統認知中是一個養生的季節,初秋悶熱多雨,天氣炎熱同時下雨的時間較長,這個時候你如果貪涼,那麼潮溼的氣候很容易讓人體感染溼寒,降低我們的免疫力:而到了深秋時節,寒風凜冽,風速強烈且寒冷的秋 ...

與腹式呼吸是最合拍的瑜伽體式,堅持練習可以減脂肪、瘦小腹

與腹式呼吸是最合拍的瑜伽體式,堅持練習可以減脂肪、瘦小腹
任何事物都不是割裂群體而單獨存在的,瑜伽自然也不例外,說起瑜伽大多數人首先想到的就是各式各樣的動作.體式,殊不知,瑜伽中最為重要的要數呼吸法,例如我們常用的腹式呼吸法.肋間呼吸法等等,而呼吸法和各類體 ...

瑜伽體式解剖刀第二篇-體式練習的第一原則-安全第一

瑜伽體式解剖刀第二篇-體式練習的第一原則-安全第一
下面這個動作,嚴格說來,他做成這個樣子就算不得瑜伽體式!錯誤解析及糾正方法:第一點錯誤,腰椎過度擠壓.做成這樣說明他在進入體式吸氣開啟胸腔時,身體伸展過度,沒有控制在中正位置,塌腰.初學者,一定要注意 ...

吃了動物血後大便發黑,是肺在排毒,還是身體有問題?告訴你答案

吃了動物血後大便發黑,是肺在排毒,還是身體有問題?告訴你答案
豬血.鴨血作為動物血液製品,深受人們喜歡,特別是愛吃火鍋的人,尤其喜歡點"血旺",也就是一片片切好的血塊,將其煮熟後口感鮮脆,讓人慾罷不能. 但是,有人經常反映,吃了動物血液製品後 ...

拔罐真的可以排毒嗎?拔出的水泡真的是體內的毒素嗎?

拔罐真的可以排毒嗎?拔出的水泡真的是體內的毒素嗎?
拔罐是利用火的燃燒和抽去罐內空氣等方法使罐體產生負壓而使身體表面區域性產生淤血,最終達到活絡通經.行氣活血.祛風散寒等作用的一種中醫的非藥物療法.無論罐體的材質是陶製.玻璃制還是竹製,原理皆相同.拔罐 ...

尊重身體慢慢來,才是解鎖瑜伽體式的正確方式

尊重身體慢慢來,才是解鎖瑜伽體式的正確方式
(讀<傳承>觀後感,結合個人練習感受,希望圖書和瑜伽的智慧對大家有所幫助.) 我喜歡看瑜伽體式美美的圖片,尤其是艾揚格大師的瑜伽體式,每張圖片都堪稱是藝術.我也曾零星曬過幾張自己的體式圖, ...

跑步時出的汗越多,減肥和排毒效果就越好?

跑步時出的汗越多,減肥和排毒效果就越好?
有人說跑步時汗流得越多,減肥效果越好,也有人說汗流得越多,排毒效果越好?真的是這樣嗎? 今天我們就來聊一聊這個話題. 跑步時很難受,但是很多跑友很享受跑完之後的大汗淋漓,因為這些汗水代表著你的付出,代 ...

中醫2個藥材,有效補氣排毒,“體毒”沒了,便秘等症狀就緩解了

中醫2個藥材,有效補氣排毒,“體毒”沒了,便秘等症狀就緩解了
你有沒有想過 為什麼現在生活條件.醫療水平更好了 人們吃的東西也越來越豐富了 但一去體檢還是全身病? 據美國疾病預防和控制中心 統計資料顯示 我們每個人的體內 迴圈著140種有毒的化學物質 這些毒素來 ...

最適合戶外打卡的瑜伽體式,來看看你能做 幾個?

最適合戶外打卡的瑜伽體式,來看看你能做 幾個?
假期來臨,出遊計劃是不是已啟動,伽人們記得帶上瑜伽去旅行哦. 這樣不僅僅開闊了視野,見識到了更大的世界,也開闊了胸襟.同時也讓我們充分吸收到了世界各個地方的天地精華,將當地的靈氣和精華都透過我們練習的 ...

節食排毒不可取
很多人認為排毒是中醫的治療方法,其實這是誤解.廣州中醫藥大學第一附屬醫院副院長林麗珠提醒大家,千萬不要相信吃瀉藥或節食就能起到排毒.抗癌作用.至今,國家規定的保健食品功能只有28項,其中並無" ...

10個簡單瑜伽與高階瑜伽的對比 初學者經典瑜伽體式適應版 詳細說明

10個簡單瑜伽與高階瑜伽的對比 初學者經典瑜伽體式適應版 詳細說明
瑜伽就是適應! 如果你在做出瑜伽姿勢時遇到困難,這裡有一些技巧可以用來調整瑜伽姿勢,以適應你的舒適度. 如果你是瑜伽新手,那麼即使是一些最"基本"的瑜伽姿勢也很有可能很難做到,或者 ...

立秋後,綠豆湯靠邊站,多給家人吃這道鹼性湯,清熱消暑又排毒

立秋後,綠豆湯靠邊站,多給家人吃這道鹼性湯,清熱消暑又排毒
大家好,我是食煙火味,一個喜歡在廚房專研美食的寶媽,分享簡單的食材,家常做法,感受家的味道.人間的煙火,一日三餐,喜歡關注食煙火味立秋後,綠豆湯靠邊站,多給家人吃這道鹼性湯,清熱消暑又排毒,現在正是季 ...

國家運動員告訴您是否真需要排毒減肥餐?

國家運動員告訴您是否真需要排毒減肥餐?
毒素其實就是體重增加大肚子.便秘.腹脹形成的.人體有肝臟.腎臟.大腸進行每天幾個小時的常規排毒,所以不需要.但是減肥排毒餐商業模式後,效果也隨之誇大,也有很多肥胖者想要透過減肥排毒餐來改變體質,原因是 ...

為何人會做夢?科學家透過實驗發現:做夢期間,大腦排毒速度加快

為何人會做夢?科學家透過實驗發現:做夢期間,大腦排毒速度加快
我們每個人都做過夢,或多.或少.夢的存在,反映了我們心底最真實的想法,正所謂"日有所思夜有所夢",這句話並不是空談.可是有沒有人想過,人為什麼會做夢呢?做夢對我們來說,究竟是好事壞 ...

血管真的需要排毒嗎?這4個關於血管的真相你一定要知道

血管真的需要排毒嗎?這4個關於血管的真相你一定要知道
在如今網路愈漸發達的時代,各種謠言滿天飛,真真假假,導致大多數人時不時就會被謠言誤導. 就比如,經常聽到有人說:血管裡面有"垃圾",如果不清理,這些"垃圾"會慢 ...

吃完豬血拉黑便,是身體在排毒?吃豬血是好是壞?聽聽醫生怎麼說

吃完豬血拉黑便,是身體在排毒?吃豬血是好是壞?聽聽醫生怎麼說
豬血作為常見的一種食材,口感鮮嫩,營養價值高,很多人在平時吃火鍋的時候,也是會選擇點上一盤,而且很多女性認為,常吃豬血,能夠起到補血的效果. 不過在生活中,很多人會發現這樣一件事,那就是在平時吃完豬血 ...

瘦身人士首選的粗糧:清腸排毒,健康低脂,纖維豐富

瘦身人士首選的粗糧:清腸排毒,健康低脂,纖維豐富
今天和大家分享一款菜糰子做法,粗糧,說不上細作,但薄皮大餡,健康低脂,飽腹感強,而且口感紮實,膳食纖維也豐富,清腸排毒,是瘦身人士首選呢! 蝦皮小白菜糰子 圖文作者 | 澤瑞媽媽 原料: 玉米麵250 ...

減肥|綠色排毒飲
綠色排毒飲|每週1天排毒日 輕鬆刮油瘦肚 養成每週1天綠色排毒日-綠色果汁可以清腎養肝保持體重,綠汁=被稱為活湯 綠色排毒果汁配方 羽衣甘藍1棵 10片葉子 用料:檸檬 1/2個 黃瓜 1根 西芹1棵 ...

網傳“人體器官夜間睡眠排毒表”能信嗎?

網傳“人體器官夜間睡眠排毒表”能信嗎?
網傳訊息截圖 網上熱傳"人體器官夜間睡眠排毒表""人體五臟六腑排毒時間"等訊息,訊息稱:晚上9:00-11:00為淋巴排毒時間.每天晚上23:00-01:00, ...

營養師:海藻類食物營養美味又健康,中老年人常吃有利於排毒養生

營養師:海藻類食物營養美味又健康,中老年人常吃有利於排毒養生
眾所周知,我們若是想要養生,飲食才是關鍵.一般來說,在生活中常吃一些有利於身體健康的食物,不僅可以幫助身體補充充足的營養成分,而且還能有效地幫身體排毒,達到養生的目的.營養師提醒:海藻類食物營養美味又 ...