資芽
日期: 2022/4/17
Controller.py 的 enemy_shoot()
的 TODO 註解中,「可以呼叫 enemy.shoot(bullet)
」應改為 「可以呼叫 enemy.shoot(bullets)
」
已經更新新的作業程式,造成不便敬請見諒
相信大家都安裝好了
如果有必要,可以再到課程網站去看教學
按下 Win+R,輸入 cmd
開啟命令提示字元
輸入以下指令安裝 pygame 的遊戲套件
打開 terminal,輸入以下指令
到 #Links 找到 「作業程式連結」並下載
然後解壓縮,裡面應該會有這些檔案:
打開 cmd
或 terminal,使用以下指令
這時候你會看到以下畫面
而且應該會發現沒辦法玩 QQ
因為寫遊戲的工程師寫到一半就跑路了 所以現在需要你來完成這個遊戲
透過左右方向鍵控制玩家船艦,可以透過空白鍵發射,遊戲開始後發射的第 n 發子彈需要按 n 下才會發射
每少一隻敵人,他們移動的時間間隔就會縮短
每次打完一波,敵人會全部重生,但每次移動的時間間隔會回到原本的長度
如果玩家沒命了,或是敵人碰到最底,遊戲就結束了
一共有四個 .py 檔案
主要 game loop 在 game.py
中、Config.py
中定義了許多常數,另外 GameObject.py
放的是遊戲物件、Controller.py
處理了許多遊戲功能
你們主要得完成的部分都在 Controller.py
標示 HOMEWORK
的那段,其他的部分不太需要去動,但建議有空可以看一看了解整個架構
pygame 的詳細使用方式會在第二階段的時候教
Config.py
定義了許多常數,請多多使用他們
提交作業的時候請只把 Controller.py
上傳上來
底下依照類別或功能做了分類,沒有說一定要按照這個順序
括號中的是跟該功能相關的 function 名稱
另外,每個你要完成的 function 中都有註解告訴你細節
player_move
) (class practice)get_enemy_movement
)in_border_check
) (class practice)handle_player_shoot
)
enemy_shoot
)
check_collision
)detect_bullet_collision
)detect_bullet_collision
)detect_bullet_collision
)detect_bullet_collision
)detect_bullet_collision
)set_enemy_movement_timer
)
ENEMY_MOVE_TIME_MAX
;最小為 ENEMY_MOVE_TIME_MIN
,取整數game_over
)TODO
來標示,雖然原本就有上色,但是安裝 Todo Tree 之類的 extension 可以讓你更方便找另外他還會整理所有的 TODO
出來,就像這樣:
你可以做完一個就把註解刪掉,方便你追蹤進度
w_space_count
跟 shoot_thres
是什麼?w_space_count
紀錄了此發子彈已經按了幾下空白鍵shoot_thres
則代表此發子彈需按多少下空白鍵後才能發射set_enemy_movement_timer
中的「線性調整」是甚麼意思?