背景交替滾動:
遊戲啟動後,背景影象會連續不斷地向下方移動;
在視覺上產生英雄的飛機不斷向上方飛行的錯覺;
即:遊戲的背景不斷變化;遊戲的主角未知保持不變;
在螢幕上,豎直疊放兩張背景影象;將第乙個影象一處螢幕後,將第一張影象憑藉到第二個影象的上方;
當第二張影象移出螢幕後 ,第一張接到上方,以此迴圈。
1)建立兩張背景影象;
第一張完全和螢幕重合;第二張在螢幕的正上方;
2)兩張影象一起向下運動;
3)當任意背景的y>=螢幕的高度時,證明已經移動到螢幕下方;
4)將移動到螢幕下方的這張影象 設定到螢幕的正上方;
設計背景類:
初始化方法:
直接指定背景
is_alt判斷是否時另一張影象
false:表示異地張圖象,需要與螢幕重合;true:表示另一張影象,在螢幕的正上方
update方法:判斷是否移出螢幕,如果是,將影象設定到螢幕的正下方,從而實現交替滾動『
顯示遊戲背景:
滾動方式
簡化對精靈組的建立
#主遊戲類
import pygame
import plane_sprite
class
planegame
(object):
"""飛機大戰主遊戲"""
def__init__
(self)
:print
("遊戲初始化"
)#1.建立遊戲視窗--矩形物件的size屬性就是元組
self.screen = pygame.display.set_mode(
(plane_sprite.screen_rect.size)
)#2.建立遊戲時鐘
self.clock = pygame.time.clock(
)#3.呼叫私有方法,精靈和精靈組的建立
self.__create_sprites(
)def
__create_sprites
(self)
:#建立背景
bg1 = plane_sprite.backgroud(
) bg2 = plane_sprite.backgroud(
true
) self.back_group = pygame.sprite.group(bg1,bg2)
defstart_game
(self)
:print
("遊戲開始"
)while
true
:#1.設定刷頻率
self.clock.tick(plane_sprite.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)
: self.back_group.update(
) self.back_group.draw(self.screen)
@staticmethod
def__game_over
(cls)
:print
("遊戲結束"
) pygame.quit(
) exit(
)if __name__ ==
'__main__'
:#建立遊戲物件
game = planegame(
)#啟動遊戲
game.start_game(
)
plane_sprite.py中
#精靈和精靈派生類;
import pygame
#螢幕大小的常量
screen_rect = pygame.rect(0,
0,480,
700)
#重新整理的幀率
frame_per_sec =
60class
gamesprite
(pygame.sprite.sprite)
:def
__init__
(self,image_name,speed =1)
:#呼叫父類的初始化方法
super()
.__init__(
)#定義物件的屬性
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect(
) self.speed = speed
defupdate
(self)
:#在螢幕的垂直方向移動
self.rect.y += self.speed
class
backgroud
(gamesprite)
:"""遊戲背景"""
def__init__
(self,is_alt=
false):
#is_alt區分時第一張影象還是第二張
#1.呼叫父類黨法完成基本設定
super()
.__init__(
"./images/background.png"
)#2.判斷是否時交替影象,如果是,需要設定初始位置
if is_alt:
self.rect.y =
-self.rect.height
defupadte
(self)
:#1.呼叫父類的方向實現,實現移動
super()
.update(
)#2.判斷是否移出螢幕,如果一處螢幕,將影象設定到螢幕的上方
if self.rect.y>= screen_rect.height:
self.rect.y =
-self.rect.height
完成了背景影象的滾動顯示 python飛機大戰 遊戲背景
背景交替滾動的思路確定 執行 備課 觀察 背景影象的顯示效果 解決辦法 建立兩張背景影象精靈 兩張影象 一起向下方運動 當 任意背景精靈 的 rect.y 螢幕的高度 說明已經 移動到螢幕下方 將 移動到螢幕下方的這張影象 設定到 螢幕的正上方 update 方法 繼承 如果父類提供的方法,不能滿足...
《Python遊戲趣味程式設計》 第7章 飛機大戰
7 飛機大戰 python遊戲開發 圖書簡介可以看這裡 童晶 python遊戲趣味程式設計 新書上架了 本章我們將編寫乙個飛機大戰的遊戲,滑鼠控制飛機移動 按下滑鼠發射子彈,效果如圖7 1所示。首先我們實現背景迴圈滾動 飛機發射子彈 然後實現敵機的控制與得分顯示 遊戲失敗判斷與處理 最後為遊戲新增音...
python小遊戲 飛機大戰(3)
二 新增 動畫 3 執行展示 三 遊戲結束介面 四 計分 五 提公升遊戲難度 六 總結 前兩節已經實現遊戲基本功能,接下來是對遊戲的完善,包括 動畫 計分 結束畫面等。這個其實是在剛開始開發就需要做的,這裡是為了方便讀者理解,將其挪到遊戲基本功能完成後再進行調整。基本思路其實很簡單,就是建立時鐘物件...