欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 恐龍跑跑小游戲?qū)崿F(xiàn)流程

 更新時間:2022年02月15日 15:26:03   作者:迢迢x  
大家好,本篇文章主要講的是用python實現(xiàn)谷歌小恐龍小游戲,看看這是你斷網(wǎng)時的樣子么,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

導(dǎo)語:

谷歌瀏覽器中有個很有名的彩蛋:當(dāng)你網(wǎng)絡(luò)出現(xiàn)問題時,就會出現(xiàn)一個“小恐龍游戲”。??

圖片

相信很多人都玩過 chrome 上提供的恐龍跑跑游戲,在我們斷網(wǎng)或者直接在瀏覽器輸入地址“chrome://dino/”都可以進入游戲。

今天我們就來給大家演示下,用Python來自己做一個仿制的“小恐龍游戲”!??

廢話不多說,讓我們愉快地開始吧~先給你們看一下運你效果??????

正文:

開發(fā)工具:

Python版本:3.6.4

相關(guān)模塊:

pygame模塊;以及一些python自帶的模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。

在終端運行如下命令即可:

python Game7.py

素材準(zhǔn)備

首先我們準(zhǔn)備下游戲所需的素材,比如恐龍圖片,仙人掌圖片,天空,地面等等,我們統(tǒng)一放到 dino 文件夾下

游戲邏輯

我們使用 Pygame 來制作游戲,先進行游戲頁面的初始化

import pygame
 
# 初始化
pygame.init()
pygame.mixer.init()
# 設(shè)置窗口大小
screen = pygame.display.set_mode((900, 200))
# 設(shè)置標(biāo)題
pygame.display.set_caption("恐龍?zhí)?)
# 使用系統(tǒng)自帶的字體
my_font = pygame.font.SysFont("arial", 20)
score = 0
# 背景色
bg_color = (218,220,225)

接下來,我們來考慮一下,游戲中有哪些游戲元素:

小恐龍:由玩家控制以躲避路上的障礙物;

路面:游戲的背景;

云:游戲的背景;

仙人掌:路上的障礙物之一,小恐龍碰上就會死掉;

記分板:記錄當(dāng)前的分?jǐn)?shù)和歷史最高分。

接下來我們將各種素材加載進內(nèi)存

# 加載正??铸?
dino_list = []
temp = ""
for i in range(1, 7):
    temp = pygame.image.load(f"dino/dino_run{i}.png")
    dino_list.append(temp)
dino_rect = temp.get_rect()
index = 0
 
# x 初始值
dino_rect.x = 100
# y 初始值
dino_rect.y = 150
# print(dino_rect)
 
# 設(shè)置y軸上的初速度為0
y_speed = 0
# 起跳初速度
jumpSpeed = -20
# 模擬重力
gravity = 2
 
 加載地面
ground = pygame.image.load("dino/ground.png")
 
# 加載仙人掌
cactus = pygame.image.load("dino/cactus1.png")
cactus_rect = cactus.get_rect()
cactus_rect.x,cactus_rect.y = 900,140
 
# 加載重新再來
restart = pygame.image.load("dino/restart.png")
restart_rect = restart.get_rect()
restart_rect.x,restart_rect.y = (900-restart.get_rect().width)/2,(200-restart.get_rect().height)/2+50
# 加載 gameover
gameover = pygame.image.load("dino/gameover.png")
gameover_rect = gameover.get_rect()
gameover_rect.x, gameover_rect.y = (
    900-gameover.get_rect().width)/2, (200-gameover.get_rect().height)/2
# 地面移動速度與距離
ground_speed = 10
ground_move_distance = 0
 
# 時鐘
clock = pygame.time.Clock()
 
# 重新再來一次
is_restart = False
text_color = (0,0,0)

再接下來,我們通過一個 while 死循環(huán)來保持游戲進程

while True:
    # 每秒30次
    clock.tick(30)
    ...

在上面的循環(huán)當(dāng)中,我們需要兩個檢測機制,事件檢測和碰撞檢測

事件檢測

# 事件偵測
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            if result_flag:
                with open("result.ini", "w+") as f:
                    f.write(str(best))
            sys.exit()
        # 空格鍵偵測
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE and dino_rect.y==150:
                y_speed = jumpSpeed

主要檢測退出事件和空格鍵事件

碰撞檢測

# 碰撞檢測
    if dino_rect.colliderect(cactus_rect):
        while not is_restart:
            # 事件偵測
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    if result_flag:
                        with open("result.ini", "w+") as f:
                            f.write(str(best))
                    sys.exit()
                # 空格鍵偵測
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_SPACE:
                        is_restart = True
                        bg_color = (218,220,225)
                        ground_speed = 10
            # 設(shè)置重新再來圖片
            screen.blit(restart, restart_rect)
            screen.blit(gameover, gameover_rect)
            pygame.display.update()

對于碰撞,只要恐龍碰撞到了仙人掌,那么游戲結(jié)束,展示重新再來圖片

由于我們希望游戲可以記錄我們的最好成績,所以這里使用了本地文件存儲游戲記錄的方式,當(dāng)游戲結(jié)束的時候,根據(jù)當(dāng)前游戲成績來判斷是否將新的成績寫入文件當(dāng)中

下面是計算跑動距離和最好成績的代碼

# 統(tǒng)計距離
    score += ground_speed
    score_surface = my_font.render("Distance: "+str(score), True, text_color)
 
    # 計算最好成績
    result_flag = False
    if score >= best:
        best = score
        result_flag = True
    best_result = my_font.render("Best Result: " + str(best), True, text_color)

我們還需要給不同距離增加不同的游戲難度,畢竟跑起來,肯定距離越遠,難度越大嘛

# 更換背景色,成績大于4000
    if score > 4000:
        bg_color = (55,55,55)
        ground_speed = 15
        text_color = (255,255, 255)
# 更換背景色,成績大于8000
    if score > 8000:
        bg_color = (220,20,60)
        ground_speed = 20
        text_color = (255, 255, 255)
 
    # 更換背景色,成績大于12000
    if score > 12000:
        bg_color = (25,25,112)
        ground_speed = 25
        text_color = (255, 255, 255)
 
    # 設(shè)置背景色
    screen.fill(bg_color)

最后我們將所有加載到內(nèi)存當(dāng)中的元素都呈現(xiàn)在 screen 上

# 設(shè)置地面圖片1
    screen.blit(ground, (0-ground_move_distance, 180))
    # 設(shè)置地面圖片2,在右邊邊界外
    screen.blit(ground, (900-ground_move_distance, 180))
    # 設(shè)置恐龍圖片
    screen.blit(dino_list[index % 6], dino_rect)
    # 設(shè)置仙人掌圖片
    screen.blit(cactus, cactus_rect)
    # 設(shè)置分?jǐn)?shù)
    screen.blit(score_surface,(780,20))
    # 設(shè)置最好成績
    screen.blit(best_result, (20, 20))
 
    pygame.display.update()

為了增加游戲性,我們再增加背景音樂和跳躍音效

pygame.mixer.music.load("background.mp3")
pygame.mixer.music.play(-1, 0)
sound = pygame.mixer.Sound('preview.mp3')

結(jié)尾:

這樣,一個簡單易用的恐龍跑跑游戲就完成了,今天的分享就到這里,喜歡就點個贊吧!

到此這篇關(guān)于Python 恐龍跑跑小游戲?qū)崿F(xiàn)流程的文章就介紹到這了,更多相關(guān)Python 恐龍跑跑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用PyGame繪制圖像并保存為圖片文件的方法

    python使用PyGame繪制圖像并保存為圖片文件的方法

    這篇文章主要介紹了python使用PyGame繪制圖像并保存為圖片文件的方法,涉及Python使用PyGame操作圖片的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • 對python中for、if、while的區(qū)別與比較方法

    對python中for、if、while的區(qū)別與比較方法

    今天小編就為大家分享一篇對python中for 、if、 while的區(qū)別與比較方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python2.x中文亂碼問題解決方法

    Python2.x中文亂碼問題解決方法

    這篇文章主要介紹了Python2.x中文亂碼問題解決方法,本文解釋問題原因、給出了處理辦法并講解了編碼解碼的一些知識,需要的朋友可以參考下
    2015-06-06
  • Pyhacker實現(xiàn)端口掃描器

    Pyhacker實現(xiàn)端口掃描器

    這篇文章主要為大家介紹了Pyhacker實現(xiàn)端口掃描器的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • python使用在線API查詢IP對應(yīng)的地理位置信息實例

    python使用在線API查詢IP對應(yīng)的地理位置信息實例

    這篇文章主要介紹了python使用在線API查詢IP對應(yīng)的地理位置信息實例,需要的朋友可以參考下
    2014-06-06
  • Python3.9.0 a1安裝pygame出錯解決全過程(小結(jié))

    Python3.9.0 a1安裝pygame出錯解決全過程(小結(jié))

    這篇文章主要介紹了Python3.9.0 a1安裝pygame出錯解決全過程(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python實現(xiàn)雙進程防止單點故障實例深度探究

    Python實現(xiàn)雙進程防止單點故障實例深度探究

    在分布式系統(tǒng)中,確保系統(tǒng)的高可用性是至關(guān)重要的,本文將深入探討如何使用Python實現(xiàn)雙進程自我保護機制,以應(yīng)對單點故障,確保系統(tǒng)穩(wěn)定運行,將通過詳實的示例代碼,介紹雙進程自我保護的原理、實現(xiàn)步驟以及可能遇到的挑戰(zhàn)
    2024-01-01
  • Python實現(xiàn)驗證碼識別

    Python實現(xiàn)驗證碼識別

    這篇文章主要介紹了Python實現(xiàn)驗證碼識別的方法,文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Python調(diào)用命令行進度條的方法

    Python調(diào)用命令行進度條的方法

    這篇文章主要介紹了Python調(diào)用命令行進度條的方法,涉及Python進度條的調(diào)用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實現(xiàn)方法

    Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實現(xiàn)方法

    這篇文章主要介紹了Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論