飛機大戰製作筆記6

2021-07-13 09:43:36 字數 1270 閱讀 2484

1.我方飛機生命

1)在main檔案中增加乙個變數 life_num 用來繼續當前生命數

2)在lift_num == 0 時 顯示遊戲退出畫面,同時關閉所有聲音和補給發放

3)繪製,繪製文字

2.無敵時間

1)在myplane類中增加乙個變數  self.invincible = false #飛機一開始並不是無敵的

2)注意要設定乙個自定義事件來 解除我方飛機無敵狀態

if me_destroy_index == 0: #當飛機毀滅顯示完時,就重置飛機

life_num -= 1

me.reset()

pygame.time.set_timer(invincible_time_finish, 3 * 1000) #呼叫自定義事件,3秒後結束飛機無敵

3)在飛機無敵時間時我方飛機和敵機不會發生碰撞:

#檢測我方飛機是否發生碰撞

enemies_down = pygame.sprite.spritecollide(me, enemies, false, pygame.sprite.collide_mask)#判斷me是否與enemies中的任何乙個發生碰撞,返回乙個列表,裡面裝了與me發生碰撞的enemies

if enemies_down and not me.invincible: #當有敵機墜毀,而且我方飛機不是無敵的時候

me.active = false #我方飛機墜毀

for each in enemies_down:

each.active = false #敵方飛機墜毀

3.記錄

if not recorded:

recorded = true #這樣設定後就可以只執行一次「開啟檔案讀取記錄分」

#讀取歷史最高得分

with open("record.txt", "r") as f:

record_score = int(f.read()) #這裡要注意一點的是:record.txt檔案中不要預設為0,否則f.read()返回的值是none

#如果玩家得分高於歷史最高得分,則存檔

if score > record_score:

record_score = score

with open("record.txt", "w") as f:

f.write(str(score))

4.結束畫面

主要是繪製,繪製文字,和按鈕觸發問題

飛機大戰製作筆記3

1.繪製直線方法 pygame.draw.line 在那個sprite上顯示,線條顏色,起始座標,終點座標,線條粗細 pygame.draw.line screen,black,x1,y1 x2,y2 2 2.顯示血槽 繪製血槽 空血槽 pygame.draw.line screen,black,e...

LayaAir飛機大戰 6

增加難度條件,實現積分達到條件後進入新關卡的邏輯 onloop void 檢測碰撞 for var i number this.rolebox.numchildren 1 i 1 i 獲取角色物件1 var role1 role this.rolebox.getchildat i as role i...

python飛機大戰筆記(6) 框架搭建

遊戲初始化 設定遊戲視窗 建立遊戲時鐘 建立精靈,精靈組 遊戲迴圈 設定重新整理幀率 事件監聽 碰撞檢測 更新 繪製精靈組 更新螢幕顯示 使用物件導向設計飛機大戰遊戲類 明確主程式職責 1 遊戲初始化 2 遊戲迴圈 主程式類 plane main 遊戲主程式 1 風轉著遊戲類 2 建立遊戲物件 3 ...