用Python和Pygame寫遊戲-從入門到精通(py2exe篇)

發表於2015-12-23

這次不是直接講解下去,而是談一下如何把我們寫的遊戲做成一個exe檔案,這樣一來,使用者不需要安裝python就可以玩了。掃清了遊戲釋出一大障礙啊!

perl,python,java等程式語言,非常好用,語法優美,功能強大;VB啥的,功能上編寫的時候總有那麼點不舒服的地方(個人見解),可是使用者和受眾極多,一個很大的原因就是:VB是微軟提供的,可以很方便的編譯(偽?)生成exe檔案。有了exe,所有的Windows都能方便的使用了。

我們不能指望使用者在玩我們的遊戲之前都安裝一個python和pygame,甚至還要裝一些其他額外的庫(比如上一章的gameobjects),這會嚇退99%以上的人……所以把我們的遊戲打包(注意是打包而不是編譯,python畢竟是指令碼程式)成一個可執行檔案勢在必行。

今天是父親節啊,祝天下父親快樂平安~

perl有perlcc(免費高效但配置極其複雜),perlapp(簡單效果也不錯但是收費)等工具;而對python來說,py2exe是不二之選,首先是免費的,而且壓出來的檔案,雖然不能和編譯軟體相比,還是不錯的了。

到py2exe的官方網站下載安裝包,注意要對應自己的python版本。

py2exe是需要寫一個指令碼進行打包的操作,使用下面這個專為pygame寫就的指令碼(參考py2exe官方),可以極大的方便打包操作,注意在使用前修改BuildExe裡的各個引數。

 

可以先從簡單的程式開始,有了一點經驗再嘗試打包複雜的遊戲。
一些Tips:

  • 如果執行出錯,會生成一個xxx.exe.log,參考這裡的log資訊看是不是少打包了東西。
  • 一開始可以使用console來打包,這樣可以在命令列裡看到更多的資訊。
  • 對於每一個遊戲,基本都需要拷貝上面的原始程式碼修改為獨一無二的打包執行檔案。
  • 即使一個很小的py檔案,最終生成的exe檔案也很大(看安裝的庫而定,我這裡最小4.7M左右),事實上py2exe在打包的時候會把無數的不需要的庫都打進來導致最終檔案臃腫,如果你安裝了很繁雜的庫(wxPython等)更是如此。使用zip打包以後檢視裡面的庫檔案,把不需要的逐一加入到self.exclude_modules中,最後可以把檔案尺寸控制在一個可以接受的範圍內。

2011/08/21 追記:
很多人在打包使用Font模組時出現問題,這裡需要把sdl_ttf.dll宣告為非系統檔案,我已經修改了指令碼預設就加入了。而且建議,如果將來是確定要打包為exe的,那麼就不要使用系統字型,即”pygame.font.SysFont(xxx)”,而是使用字型檔案,然後打包時將檔案當作圖片等一起打包,這樣出問題的概率會大大降低。

2011/09/24 追記:
感謝blues_city網友,“dist_dir”應該是屬於py2exe的特有options而不是setup的。

歡迎大家試用並提出建議,不斷完善這個指令碼。

相關文章