<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                  最近開始學習Python語言,發現Python有一個神奇的Pygame模塊,在編寫小游戲時顯得非常方便,于是參照教學視頻編寫了一個微信打飛機的小游戲,網上有很多相關的博客,但都不是很詳細,大都是直接貼代碼,于是決定沉下心來把編寫程序的過程記錄下來,與大家分享。   首先聲明一點,這篇博客完全參照了小甲魚的《零基礎入門學習Python》教學視頻,為了尊重原創,特將原作者的視頻地址公布如下:[《零基礎入門學習Python》](http://blog.fishc.com/category/python "零基礎入門學習Python")   Python編譯器和Pygame模塊的安裝網上的教程很多,這里不再贅述,需要強調的一點是,兩者之前不僅要求版本一致,所對應操作系統位數也應該一致,例如32位的Pygame模塊必須對應32位的Python編譯器,我采用的是Python3.4(32位),所用Python的IDE為Pycharm。   在編寫游戲的過程中需要用到大量圖片和聲音資源,如背景圖片、背景音樂等,這里將相關資源統一打包,供大家下載:[《微信打飛機圖片音效資源》](http://download.csdn.net/detail/u013088062/9250515 "《微信打飛機圖片音效資源》")   [Python編寫微信打飛機小游戲(一)](http://blog.csdn.net/u013088062/article/details/49705439)   [Python編寫微信打飛機小游戲(二)](http://blog.csdn.net/u013088062/article/details/49722387)   [Python編寫微信打飛機小游戲(三)](http://blog.csdn.net/u013088062/article/details/49744985)   [Python編寫微信打飛機小游戲(四)](http://blog.csdn.net/u013088062/article/details/49766129)   [Python編寫微信打飛機小游戲(五)](http://blog.csdn.net/u013088062/article/details/49786277)   [Python編寫微信打飛機小游戲(六)](http://blog.csdn.net/u013088062/article/details/49823693)   [Python編寫微信打飛機小游戲(七)](http://blog.csdn.net/u013088062/article/details/49834123)   [Python編寫微信打飛機小游戲(八)](http://blog.csdn.net/u013088062/article/details/49872089)   [Python編寫微信打飛機小游戲(九)](http://blog.csdn.net/u013088062/article/details/49890837)   [Python編寫微信打飛機小游戲(十)](http://blog.csdn.net/u013088062/article/details/49893717)   [Python編寫微信打飛機小游戲(十一)](http://blog.csdn.net/u013088062/article/details/49904363)   [Python編寫微信打飛機小游戲(十二)](http://blog.csdn.net/u013088062/article/details/49907607)   1、導入相關模塊。   創建主函數文件,如“mian.py”,在程序開始前將用到的Python模塊導入: ~~~ # 導入相關模塊 # coding: utf-8 import pygame import sys import tracebackfrom random import * from pygame.locals import * ~~~   這里有幾個問題需要解釋一下:(1)如果Python不能正常打印中文字符,需要在文件開頭加上“# coding: utf-8”來指定對應的編碼類型;(2)“sys”為系統模塊,“traceback”為Python用來捕獲異常的模塊,“random”為隨機數生成模塊,“pygame.locals”則包含了Pygame中的一些固定的標志常量,在下面的程序中將會用到。(3)這里涉及了Python兩種導入模塊的方式,一種是形如“import pygame”,這種方法表示聲明一個模塊,如果需要使用其中的元素,應采用“模塊名.變量名”的格式;另一種形如“from random import *”,表示將模塊中的所有元素全部導入當前工程,在使用時直接使用元素名稱即可。   2、加載相關資源   將下載得到的資源(一個image文件夾,一個sound文件夾)放入工程目錄下(與mian.py相同的文件夾中),之后在主程序中加載這些資源。在加載之前,需要對pygame的相關功能進行初始化: ~~~ # ==================初始化================== pygame.init() pygame.mixer.init() # 混音器初始化 bg_size = width, height = 480, 852 # 設計背景尺寸 screen = pygame.display.set_mode(bg_size) # 設置背景對話框 pygame.display.set_caption("飛機大戰……FishC Demo") background = pygame.image.load("image/background.png") # 加載背景圖片,并設置為不透明 ~~~   注意:(1)mixer為pygame模塊的聲音控制對象(俗稱混音器),在涉及到與聲音有關的操作時會用到。(2)bg_size取決于背景圖片的尺寸   在完成相關初始化后,可以正式的加載背景圖片和相關音效了: ~~~ # ==========載入游戲音樂==================== pygame.mixer.music.load("sound/game_music.wav") pygame.mixer.music.set_volume(0.2) bullet_sound = pygame.mixer.Sound("sound/bullet.wav") bullet_sound.set_volume(0.2) big_enemy_flying_sound = pygame.mixer.Sound("sound/big_spaceship_flying.wav") big_enemy_flying_sound.set_volume(0.2) enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav") enemy1_down_sound.set_volume(0.2) enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav") enemy2_down_sound.set_volume(0.2) enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav") enemy3_down_sound.set_volume(0.2) me_down_sound = pygame.mixer.Sound("sound/game_over.wav") me_down_sound.set_volume(0.2) button_down_sound = pygame.mixer.Sound("sound/button.wav") button_down_sound.set_volume(0.2) level_up_sound = pygame.mixer.Sound("sound/achievement.wav") level_up_sound.set_volume(0.2) bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav") bomb_sound.set_volume(0.2) get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav") get_bomb_sound.set_volume(0.2) get_bullet_sound = pygame.mixer.Sound("sound/get_double_laser.wav") get_bullet_sound.set_volume(0.2) ~~~   注意,由于pygame音頻處理能力有限,在讀取音頻信息時,需要將音頻文件轉換成wav格式,普通的MP3格式一般情況下是無法正常讀取的,更多pygame有關音頻文件的操作可以參考下面的博客:[《Pygame音頻操作》](http://www.cnblogs.com/xiaowuyi/archive/2012/06/15/2550338.html "Pygame音頻操作")[ ](http://www.cnblogs.com/xiaowuyi/archive/2012/06/15/2550338.html "pygame音頻操作")   3、游戲主進程,循環播放背景音樂   在加載完相關資源之后,開始編寫游戲的主函數。由于還沒有定義相關的模塊,這里顯示編寫一個最簡單的框架,讓程序能夠循環運行起來。 ~~~ if __name__ == '__main__': try: main() except SystemExit: pass except: traceback.print_exc() pygame.quit() input() ~~~   這是Python的主程序入口,如果我們運行main.py文件,程序則自動開始運行。如果只是將main.py作為一個模塊import到其他工程中,則不會觸發這個函數的運行。注意在這里我們使用了try語句來捕獲程序運行時出現的異常,如果main()函數在運行過程中拋出任何異常,除了系統正常退出(SystemExit)的異常外,其他異常都通過“traceback.print_exc()”來打印異常信息,同時調用“pygame.quit()”退出程序。   由于還沒有編寫其他代碼,在此處我們只編寫一個最簡單的main()函數來保證程序的正常運行,即簡單的顯示背景圖片并循環播放背景音樂: ~~~ def main(): pygame.mixer.music.play(-1) running = True while running: screen.blit(background, (0, 0)) for event in pygame.event.get(): # 響應用戶的偶然操作 if event.type == QUIT: # 如果用戶按下屏幕上的關閉按鈕,觸發QUIT事件,程序退出 pygame.quit() sys.exit() pygame.display.flip() ~~~   這里對混音器mixer的成員函數play()賦值為-1代表循環播放該音樂,如果形參為空,則只播放一次該音樂。這里在主程序循環中需要設置用戶退出操作,當檢測到用戶按下界面的關閉按鈕時(×),程序將調用pygame.quit()和sys.exit()完成退出。注意如果不設置這個操作,將會導致程序無法正常關閉(一般表現為程序無法響應)。在屏幕繪制方面,Python采用了一種雙緩沖的屏幕刷新機制,即先通過blit()函數將一個圖片(統稱為surface對象)繪制在內存中,最后統一用pygame.display.flip()函數將繪制好的surface對象一次全部刷新到屏幕上。至于什么是surface對象,可以暫時理解為Python世界中的所有的圖形圖像吧。ok,第一部分就先介紹這些。 [《Python編寫微信打飛機小游戲(一)》](http://blog.csdn.net/u013088062/article/details/49705439)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看