目標—— 使用面相物件設計飛機大戰遊戲類
根據明確的職責,設計planegame
類如下:
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-3yfapo4n-1592320505799)(media/15025159832322/009_%e6%b8%b8%e6%88%8f%e4%b8%bb%e7%a8%8b%e5%ba%8f.png)]
提示根據職責封裝私有方法,可以避免某乙個方法的**寫得太過冗長方法如果某乙個方法編寫的太長,既不好閱讀,也不好維護!
職責__create_sprites(self)
建立所有精靈和精靈組 方法
職責__event_handler(self)
事件監聽
__check_collide(self)
碰撞檢測 —— 子彈銷毀敵機、敵機撞毀英雄
__update_sprites(self)
精靈組更新和繪製
__game_over()
遊戲結束
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-sx0lcohh-1592320505853)(media/15025159832322/011_%e7%a8%8b%e5%ba%8f%e6%96%87%e4%bb%b6%e8%81%8c%e8%b4%a3.png)]
**實現
import pygame
from plane_sprites import
*class
planegame
(object):
"""飛機大戰主遊戲"""
def__init__
(self)
:print
("遊戲初始化"
)def
start_game
(self)
:print
("開始遊戲..."
)if __name__ ==
'__main__'
:# 建立遊戲物件
game = planegame(
)# 開始遊戲
game.start_game(
)
def
__init__
(self)
:print
("遊戲初始化"
)# 1. 建立遊戲的視窗
self.screen = pygame.display.set_mode(
(480
,700))
# 2. 建立遊戲的時鐘
self.clock = pygame.time.clock(
)# 3. 呼叫私有方法,精靈和精靈組的建立
self.__create_sprites(
)def
__create_sprites
(self)
:pass
使用 常量 代替固定的數值應用場景
常量的定義
常量的好處
**調整
import pygame
# 遊戲螢幕大小
screen_rect = pygame.rect(0,
0,480,
700)
self.screen = pygame.display.set_mode(screen_rect.size)
def
start_game
(self)
:"""開始遊戲"""
print
("開始遊戲..."
)while
true
:# 1. 設定重新整理幀率
self.clock.tick(60)
# 2. 事件監聽
self.__event_handler(
)# 3. 碰撞檢測
self.__check_collide(
)# 4. 更新精靈組
self.__update_sprites(
)# 5. 更新螢幕顯示
pygame.display.update(
)def
__event_handler
(self)
:"""事件監聽"""
for event in pygame.event.get():
if event.
type
== pygame.quit:
planegame.__game_over(
)def
__check_collide
(self)
:"""碰撞檢測"""
pass
def__update_sprites
(self)
:"""更新精靈組"""
pass
@staticmethod
def__game_over()
:"""遊戲結束"""
print
("遊戲結束"
) pygame.quit(
) exit(
)
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-e3s1ba3a-1592320505859)(media/15025159832322/010_%e7%b2%be%e7%81%b5%e7%bb%84%e7%a1%ae%e5%ae%9a.png)]
def
__create_sprites
(self)
:"""建立精靈組"""
# 背景組
self.back_group = pygame.sprite.group(
)# 敵機組
self.enemy_group = pygame.sprite.group(
)# 英雄組
self.hero_group = pygame.sprite.group(
)
def
__update_sprites
(self)
:"""更新精靈組"""
for group in
[self.back_group, self.enemy_group, self.hero_group]
:
group.update(
) group.draw(self.screen)
python入門實戰 飛機大戰(3)
執行備課 觀察背景影象的顯示效果 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img rmqum4ug 1592320815108 media 15025262948537 013 e8 83 8c e6 99 af e5 9b be e7 89 87 e4 ba a4 e6 9b ...
Python飛機大戰
玩家飛機可以移動,可以發射子彈,敵機隨機產生,自由墜落。未新增擊落敵機的功能。主要用來練習類的封裝與繼承。coding utf 8 import pygame,random from pygame.locals import class base object def init self,x,y,s...
Python 飛機大戰
新建專案 在選中主韙專案的情況下,tab鍵,會自動的出來乙個下級分支 在選中當前分支的情況五,點enter,會出來乙個同級的分支 第一次背景精靈組,呼叫 update方法。結果就是,背景精靈組中的所有背景物件,呼叫自身的update方法 初始化的時候,生成了 兩個背景物件 並且,建立了乙個背景圖精靈...