iT邦幫忙

2026 iThome 鐵人賽

0
自我挑戰組

學習用Pygame製作小專案系列 第 31 篇

完成打包了,還有來整理一下

  • 分享至 

  • xImage
  •  

我修理了最後打包遇到的問題,雖是這樣說老實說我沒有主動修掉甚麼問題,我現在的專案中除了main.py主程式以外,有個charater.py是有在主程式用到的,然後是assets資料夾放了各種有用到的素材檔案,其中一個是icon,然後上次我把icon圖片從png轉成ico檔,然後用安裝好PyInstaller後用這指令試著打包了:
python -m PyInstaller --onefile --windowed --add-data "assets;assets" --icon "assets/icon.ico" main.py,指定了要包入assets和指定icon是icon.ico,這次打包是失敗的,打開的視窗的錯誤是沒包到charater.py,但說應該會有用到就被PyInstaller包進去,所以再試了打包,出現了沒有png檔的問題,再試一次就成功了,問我的chatGPT說如果指令沒錯應該不會一下失敗一下成功的,所以可能是快取影響了結果,或是我做了甚麼操作我沒注意到的影響了結果,再不然就是它說錯了,總之是成功了。

接下來我想稍微整理一下我這個嘗試最後做成了什麼樣子

專案結構

我的結構還蠻簡單的,就是整個的資料夾,然後裡面是這樣:

  • main.py 也就是主程式
  • charater.py 我把各種角色class的程式都放在這
  • assets資料夾 這是我的素材資料夾,放了用到的圖片、字體和icon這些檔案
  • tool.py 這個沒有在程式中直接用到,它釋放一些工具的class用的,讓我做一些東西時更方便(像我唯一寫出來的tool是用來讓我畫地圖上的牆壁用的)
  • test.py 這個程式也沒有在程式中被使用,就是測試一些程式碼之類的東西用的
    再來還有兩個是我想過要做,但沒有真的做的:GUI.py和file.py。原本我打算把使用地圖的座標不跟著鏡頭走的東西放在charater裡,像是貼在鏡頭上的東西則放GUI.py,不過其實也只有一個是貼鏡頭的,file.py是用來做讀取檔案的,雖然我沒有做,但要做的話寫入檔案應該也會放這,會想這樣做是因為上次打包時這部分遇到不少問題,想說可以都放這個.py,比較好一起處理這樣,但後來因為時間和怕變複雜,就都沒有做了。

主程式

我的主程式分成兩個部分,迴圈前的準備和主迴圈

迴圈前準備

迴圈前準備就是建立好各種要用的變數、方法,這裡比較有趣的我覺得是做了角色物件的陣列,有兩個陣列,一個是這場景的角色陣列,放了這個場景的幾乎所有角色物件,這樣要做各種對所有角色的判斷就能做到,比如說畫出所有角色,判斷誰被點擊之類的,我寫的工具就是有關這個的,但是是另一個叫地圖矩形陣列,就是一些畫在地圖上的矩形用來當牆壁地板用的,透過工具畫場景,然後得到矩形資訊後就能,就能把資訊複製過去,創出所有的矩形,然後用在碰撞上,後來當我做到多個場景時,就變成有一個二維陣列放了所有場景的場景的陣列,在切換時就把要的陣列放到處理的陣列的位置。

迴圈

這裡就正式跑遊戲了,我寫一寫迴圈大概分成三個部分:

  • 蒐集資料,這裡會蒐集各種資料,比如空白鍵有沒有按下、有沒有被按下視窗上的叉叉之類的。
  • 做動作,這裡就會用到剛剛蒐集到的資訊,比如用蒐集到的按鍵資訊判斷要不要移動、用被點擊的角色資訊判斷要做甚麼之類的,這裡有可以分成,每回合觸發,像主角移動,和像進度這種在特定狀況才觸發的,這裡我用了進度、場景兩個變數判斷要做甚麼,但感覺如果一個場景多個同角色這就有可能出問題了。
  • 畫畫面,這裡用了畫畫面的函式來做,就是像依序跑完角色陣列把所有角色按照它資訊畫出來這樣。

我差不多就是這樣做我要的效果的。

鏡頭和世界的作法

這裡是想來寫是怎麼做出世界不是跟視窗綁在一起,而是能像是鏡頭一樣,鏡頭外面也有空間的,最主要要做的就是要建座標變數。

  • 角色會有自己的座標變數,就是在地圖上的座標,當它要做各種動作時也是改這個座標,最後畫畫面了時候按照這座標算出又放哪裡
  • 鏡頭也設了鏡頭的座標,就像是真的有一個鏡頭,而這是它的座標,畫面也是用所有東西和它的相對位置算的
  • 最後是滑鼠也建了座標,用來看互動、點了那裡用的這樣
    有了這些座標,這些角色就不再是被拘束在鏡頭下了,可以讓他們去探索這遼闊的世界W
偷偷放上我做出來的畫面

https://ithelp.ithome.com.tw/upload/images/20261013/20184145kaUVfVSrrm.png


上一篇
Day30 最後一天,把想放的東西都放進去了,但還沒打包完
系列文
學習用Pygame製作小專案 共 31 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言