發(fā)布時間:2023-11-29 16:04:59 瀏覽量:109次
相信很多人都玩過 chrome 瀏覽器上提供的恐龍跑跑游戲,在我們斷網(wǎng)或者直接在瀏覽器輸入地址“chrome://dino/”都可以進(jìn)入游戲
今天我們就是用 Python 來制作一個類似的小游戲
首先我們準(zhǔn)備下游戲所需的素材,比如恐龍圖片,仙人掌圖片,天空,地面等等,我們統(tǒng)一放到 dino 文件夾下
我們使用 Pygame 來制作游戲,先進(jìn)行游戲頁面的初始化
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)
接下來我們將各種素材加載進(jìn)內(nèi)存
# 加載正??铸?/span>
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)來保持游戲進(jì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)
我們還需要給不同距離增加不同的游戲難度,畢竟跑起來,肯定距離越遠(yuǎn),難度越大嘛
# 更換背景色,成績大于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')
這樣,一個簡單易用的恐龍跑跑游戲就完成了,我們來看下效果吧
好了,今天的分享就到這里,喜歡就點個贊吧
END
最近有一些小伙伴,讓我?guī)兔φ乙恍?學(xué)習(xí)資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是Python學(xué)習(xí)必備!
所有資料都整理到網(wǎng)盤了,需要的私信777獲取!
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點擊咨詢報名。
2. 手機游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白。快來試試!
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟體系揭秘,不同玩家角色的經(jīng)濟活動
Bigtime加密游戲經(jīng)濟模型分析,探討游戲經(jīng)濟特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
10. Unity3D入門:手把手帶你開發(fā)一款坦克大戰(zhàn)的游戲
Unity工程創(chuàng)建完成后如圖所示: 接下來應(yīng)該導(dǎo)入此項目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方網(wǎng)站下載(地址:ht...
最新文章
同學(xué)您好!