一切都編寫完畢且測試無誤後,開始將py檔案編譯為exe可執行檔案。、
比較常見的工具有三種:pyinstaller、py2exe和乙個名字比較難記的工具。
一開始三個工具都試過,結果都出現錯誤,或者exe打不開,關於py2exe看見網上說在cmd裡寫好其他被import的自定義檔案,-p 加py檔名,似乎還要再之後加-hidden import 加檔名,我一想我這麼多自定義函式這乙個個敲費勁了,後來寫了**跑了一下遍歷所有名字然後拼成乙個cmd命令,結果還是失敗。
關於pyinstaller搜到幾個部落格看著高階點的用了spec寫,但是根據其他博主的方法也沒寫出來。
後來覺得沒戲了心灰意冷地鴿了幾天,都打算把py檔案打包直接給上交了,後來有一天突發奇想,使用pyinstaller對簡單的便宜編譯試試,單個py轉到exe,ok;單個呼叫另乙個py,只編譯了入口函式,不ok,然後把被呼叫的py放在exe目錄下,ok;然後測試了單個py呼叫資料夾下的py,並把資料夾移動過去,結果在spyder裡都編譯錯誤,顯示沒有這個包名(import 資料夾名.py檔名),然後搜了搜,要在資料夾下加乙個空白的py檔案__init__.py即可,然後編譯了一下ok。看到的error和之前入口函式enter.py直接編譯後在build資料夾下自動生成的warnenter.txt裡最後一行「no module:codes」很相似【只編譯enter.py可以編譯成功但打不開】,於是在複製源**裡每個資料夾下加了__init__.py,然後重新編譯後把其他被呼叫的資料夾搬到dist資料夾下(exe所在位址),然後在cmd編譯:
pyinstaller d:\myg\enter.py
pip uninstall numpy然後再次編譯,複製資料夾,完美執行。pip install numpy
如果cmd未識別pip或pyinstaller,那麼就在環境變數的path新增python路徑的scripts,例如d:\anaconda3\scripts。
pygame飛機大戰3
self.destroy images.extend pygame.image.load images enemy1 down1.png convert alpha pygame.image.load images enemy1 down2.png convert alpha pygame.imag...
pygame飛機大戰4
pygame.mask.from su ce self,image 對的非透明部分做標記 pygame.sprite.spritecollide b,enemies,false,pygame.sprite.collide mask 完美檢測碰撞 me.rect.midtop,子彈生成在飛機的中間的頂...
pygame飛機大戰5
score font.render score s str score true,white render函式把字元字串轉換為su ce物件 true拒絕鋸齒 paused rect.collidepoint event.pos 在paused rect矩形類裡有collidepoint event...