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

2021-09-29 18:01:03 字數 2028 閱讀 9126

遊戲初始化:設定遊戲視窗;建立遊戲時鐘;建立精靈,精靈組

遊戲迴圈:設定重新整理幀率;事件監聽;碰撞檢測;更新/繪製精靈組;更新螢幕顯示

使用物件導向設計飛機大戰遊戲類

明確主程式職責:1)遊戲初始化;2)遊戲迴圈

主程式類:plane_main:遊戲主程式

1)風轉著遊戲類;2)建立遊戲物件;3)啟動遊戲

plane_sprites:螢幕尺寸常量,遊戲精靈子類

1)封裝遊戲中所有需要使用的精靈子類;2)提供遊戲的相關工具

**實現:

新建plane_main.py檔案

使用常量代替固定的數值;

應用場景:

開發時,可能會需要使用固定的數值,例如螢幕的高度是700;這個時候,建議不要直接使用固定數值,而應該使用常量;在開發時,為了保證**的可維護性,盡量不要使用魔法數字;

常量常量的定義:定義常量和定義變數的語法完全一樣,都是使用賦值語句;

常量的命名應該所有字母都使用大寫,單詞與單詞之間使用下劃線連線;

#主遊戲類

import pygame

import plane_sprite

#螢幕大小的常量

screen_rect = pygame.rect(0,

0,480,

700)

#重新整理的幀率

frame_per_sec =

60class

planegame

(object):

"""飛機大戰主遊戲"""

def__init__

(self)

:print

("遊戲初始化"

)#1.建立遊戲視窗--矩形物件的size屬性就是元組

self.screen = pygame.display.set_mode(

(screen_rect.size)

)#2.建立遊戲時鐘

self.clock = pygame.time.clock(

)#3.呼叫私有方法,精靈和精靈組的建立

self.__create_sprites(

)def

__create_sprites

(self)

:pass

defstart_game

(self)

:print

("遊戲開始"

)while

true

:#1.設定刷頻率

self.clock.tick(frame_per_sec)

#2.事件監聽

self.__event_handles(

)#3.碰撞檢測

self.__check_collide(

)#4,更新/繪製精靈組

self.__update_sprites(

)#5.更新顯示

pygame.display.update(

)def

__event_handles

(self)

:for even in pygame.event.get():

#判斷是否退出遊戲

if even.

type

== pygame.quit:

planegame.__game_over(

)def

__check_collide

(self)

:pass

def__update_sprites

(self)

:pass

@staticmethod

def__game_over

(cls)

:print

("遊戲結束"

) pygame.quit(

) exit(

)if __name__ ==

'__main__'

:#建立遊戲物件

game = planegame(

)#啟動遊戲

game.start_game(

)

飛機大戰6 遊戲框架

目標 使用面相物件設計飛機大戰遊戲類 根據明確的職責,設計planegame類如下 提示根據職責封裝私有方法,可以避免某乙個方法的 寫得太過冗長 如果某乙個方法編寫的太長,既不好閱讀,也不好維護!方法 職責 create sprites self 建立所有精靈和精靈組 方法 職責 event han...

飛機大戰製作筆記6

1.我方飛機生命 1 在main檔案中增加乙個變數 life num 用來繼續當前生命數 2 在lift num 0 時 顯示遊戲退出畫面,同時關閉所有聲音和補給發放 3 繪製,繪製文字 2.無敵時間 1 在myplane類中增加乙個變數 self.invincible false 飛機一開始並不是...

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