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 ...