執行備課**,觀察背景影象的顯示效果:
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-rmqum4ug-1592320815108)(media/15025262948537/013_%e8%83%8c%e6%99%af%e5%9b%be%e7%89%87%e4%ba%a4%e6%9b%bf%e6%bb%9a%e5%8a%a8.png)]
解決辦法
建立兩張背景影象精靈
兩張影象一起向下方運動當任意背景精靈的rect.y >= 螢幕的高度
說明已經移動到螢幕下方將移動到螢幕下方的這張影象設定到螢幕的正上方[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-clxprql9-1592320815150)(media/15025262948537/012_%e6%b4%be%e7%94%9fbackground%e5%ad%90%e7%b1%bb.png)]
update()方法
繼承如果父類提供的方法,不能滿足子類的需求:
class
background
(gamesprite)
:"""遊戲背景精靈"""
defupdate
(self)
:# 1. 呼叫父類的方法實現
super()
.update(
)# 2. 判斷是否移出螢幕,如果移出螢幕,將影象設定到螢幕的上方
if self.rect.y >= screen_rect.height:
self.rect.y =
-self.rect.height
在__create_sprites
方法中建立精靈和精靈組在__update_sprites
方法中,讓精靈組呼叫update()
和draw()
方法
__create_sprites
方法
def
__create_sprites
(self)
:# 建立背景精靈和精靈組
bg1 = background(
"./images/background.png"
) bg2 = background(
"./images/background.png"
) bg2.rect.y =
-bg2.rect.height
self.back_group = pygame.sprite.group(bg1, bg2)
__update_sprites
方法
def
__update_sprites
(self)
: self.back_group.update(
) self.back_group.draw(self.screen)
思考 —— 上一小結完成的**存在什麼樣的問題?能否簡化?
思考 —— 精靈初始位置的設定,應該由主程式負責?還是由精靈自己負責?答案——由精靈自己負責
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ckm1qu1q-1592320815159)(media/15025262948537/012_%e6%b4%be%e7%94%9fbackground%e5%ad%90%e7%b1%bb.png)]
在plane_sprites.py
中實現background
的初始化方法
def
__init__
(self, is_alt=
false):
image_name =
"./images/background.png"
super()
.__init__(image_name)
# 判斷是否交替,如果是,將設定到螢幕頂部
if is_alt:
self.rect.y =
-self.rect.height
# 建立背景精靈和精靈組
bg1 = background(
)bg2 = background(
true
)self.back_group = pygame.sprite.group(bg1, bg2)
python入門實戰 飛機大戰(2)
目標 使用面相物件設計飛機大戰遊戲類 根據明確的職責,設計planegame類如下 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img 3yfapo4n 1592320505799 media 15025159832322 009 e6 b8 b8 e6 88 8f e4 b8 bb...
飛機大戰 3
今天主要是敵方飛機的建立,下落 前面已建飛機的父類call 2 敵方飛機 function enemyplane hp,x,y,sizex,sizey,score,dietime,sudu,bombplane,srcimage 敵方的飛機型別分為大中小,要隨機下落 飛機的隨機下落,大中小飛機出現頻率...
Python飛機大戰
玩家飛機可以移動,可以發射子彈,敵機隨機產生,自由墜落。未新增擊落敵機的功能。主要用來練習類的封裝與繼承。coding utf 8 import pygame,random from pygame.locals import class base object def init self,x,y,s...