飛機(jī)大戰(zhàn)(pygame)開發(fā)實(shí)錄八

上一篇已經(jīng)完成了游戲主體部分念秧,本篇開始逐步完善游戲,首先是增加背景和音效聊闯。


背景音樂

背景音樂控制操作比較少:
1工猜、游戲開始循環(huán)播放
2、游戲中點(diǎn)擊"音樂開關(guān)"按鈕停止播放,再次點(diǎn)擊重新循環(huán)播放菱蔬。
我們直接寫進(jìn) Main() 函數(shù)

exp8 添加
pygame.mixer.music.load(Music_backgroud) #加載音頻文件篷帅,背景音樂一般用mp3
pygame.mixer.music.play(-1, 0)
#循環(huán)播放音樂
#參數(shù)1:播放次數(shù),注意這里不是常規(guī)的0表示循環(huán)而是-1拴泌。
#參數(shù)2:表示從音頻的什么位置開始播放魏身,0是從頭開始。
音效

音效調(diào)用比較頻繁蚪腐,發(fā)射子彈箭昵、集中、飛機(jī)刷新……都可以有對(duì)應(yīng)的音效削茁,所以把播放音效封裝成一個(gè)函數(shù)宙枷。

def PlaySound(soundfilename):
    if Sound_IsPlay: 
    #這里引用了一個(gè)全局變量,來判斷是否播放音效茧跋。
    #音效調(diào)用的很多慰丛,不能參照背景音樂,自己對(duì)它進(jìn)行關(guān)閉瘾杭、播放操作诅病。
        sound = pygame.mixer.Sound(soundfilename)
        sound.play()
#是否播放音效  添加全局變量聲明 exp8 添加
Sound_IsPlay            = True

在需要音效的位置,添加 PlaySound... 函數(shù)的調(diào)用即可。


游戲中背景音樂贤笆、音效的關(guān)閉及開啟

為了控制背景音樂蝇棉、音效的開關(guān),我們需要添加了兩個(gè)按鈕芥永。
在此之前篡殷,需要先添加一個(gè)按鈕基類。

# exp8 添加
class Button(Base):
    def __init__(self, pygame_screen, normal_image, bemoved_image, postion,type):
        Base.__init__(self, pygame_screen, postion, normal_image)
        self.imageBeMoved = pygame.image.load(bemoved_image)
        self.type = type
        #選擇鼠標(biāo)經(jīng)過它埋涧,動(dòng)態(tài)顯示的風(fēng)格板辽,
        #這里做了兩種風(fēng)格
        # 1、dislocation位移:即鼠標(biāo)經(jīng)過棘催,imageBeMoved圖片發(fā)生偏移劲弦,產(chǎn)生陰影或加粗的效果。
        # 2醇坝、replace更換圖片:即鼠標(biāo)經(jīng)過邑跪,imageBeMoved圖片顯示,normal_image圖片隱藏呼猪。
    def isOver(self):
        # 判斷鼠標(biāo)是否經(jīng)過
        pointX, pointY = pygame.mouse.get_pos()
        inX = self.x < pointX < self.x + self.w
        inY = self.y < pointY < self.y + self.h
        return inX and inY

    def display(self):
        # 根據(jù)type來繪制不同的按鈕
        if self.isOver():
            if self.type == 'dislocation':
                self.screen.blit(self.imageBeMoved, (self.x + 1, self.y + 1))
                self.screen.blit(self.image, (self.x, self.y))
            elif self.type == 'replace':
                self.screen.blit(self.imageBeMoved, (self.x, self.y))
            else:
                self.screen.blit(self.image, (self.x, self.y))
        else:
            self.screen.blit(self.image, (self.x, self.y))

Main() 函數(shù)中 創(chuàng)建背景画畅、音效開關(guān)按鈕

# 創(chuàng)建背景、音效開關(guān)按鈕 exp8 添加
cbSound = Button(screen, Image_SoundNor, Image_Sound, (406, 810),"replace")
cbMusic = Button(screen, Image_MusicNor, Image_Music, (442, 810),"replace")

Main() 函數(shù)中補(bǔ)充相關(guān)方法和函數(shù)的調(diào)用

#繪制按鈕 exp8 添加
cbSound.display()
cbMusic.display()
#exp8 添加cbSound, cbMusic傳參
MainControl(hero, screen,cbSound, cbMusic)

MainControl函數(shù)郑叠,已經(jīng)包含了 背景音樂夜赵、音效開關(guān) 按鈕的響應(yīng)處理

        if cbmusic:
            if event.type == pygame.MOUSEBUTTONDOWN and cbmusic.isOver():  # 關(guān)閉背景音樂
                if pygame.mixer.music.get_busy() == 1:
                    pygame.mixer.music.stop()
                else:
                    pygame.mixer.music.play(-1, 0)
        if cbsound:
            if event.type == pygame.MOUSEBUTTONDOWN and cbsound.isOver():  # 關(guān)閉音效
                global Sound_IsPlay  # 修改全局變量
                Sound_IsPlay = False if Sound_IsPlay else True  # 三目運(yùn)算,更加簡(jiǎn)潔

需要注意乡革,音頻操作需要 pygame.init()初始化操作。一般寫在主函數(shù)開始位置就可以了摊腋。
本篇講解了背景和音效的操作沸版,下一篇繼續(xù)添加游戲暫停、重新開始游戲兴蒸、展示游戲信息视粮。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市橙凳,隨后出現(xiàn)的幾起案子蕾殴,更是在濱河造成了極大的恐慌,老刑警劉巖岛啸,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钓觉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡坚踩,警方通過查閱死者的電腦和手機(jī)荡灾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人批幌,你說我怎么就攤上這事础锐。” “怎么了荧缘?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵皆警,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我截粗,道長(zhǎng)信姓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任桐愉,我火速辦了婚禮财破,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘从诲。我一直安慰自己左痢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布系洛。 她就那樣靜靜地躺著俊性,像睡著了一般。 火紅的嫁衣襯著肌膚如雪描扯。 梳的紋絲不亂的頭發(fā)上定页,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音绽诚,去河邊找鬼典徊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恩够,可吹牛的內(nèi)容都是我干的卒落。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼蜂桶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼儡毕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扑媚,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤腰湾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后疆股,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體费坊,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年押桃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葵萎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片导犹。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖羡忘,靈堂內(nèi)的尸體忽然破棺而出谎痢,到底是詐尸還是另有隱情,我是刑警寧澤卷雕,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布节猿,位于F島的核電站,受9級(jí)特大地震影響漫雕,放射性物質(zhì)發(fā)生泄漏滨嘱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一浸间、第九天 我趴在偏房一處隱蔽的房頂上張望太雨。 院中可真熱鬧,春花似錦魁蒜、人聲如沸囊扳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锥咸。三九已至,卻和暖如春细移,著一層夾襖步出監(jiān)牢的瞬間搏予,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工弧轧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雪侥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓精绎,卻偏偏與公主長(zhǎng)得像校镐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捺典,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容