作業繳交表單:https://forms.gle/AKotzxUeXfhmZUWP8
死線
大家應該早就有了(吧?
以系統管理員身份打開命令提示字元 (cmd),執行以下指令:
如果是使用 Anaconda 安裝 python 的,請打開「開始功能表
並輸入以下指令:
pip install pygame
(失敗的話,請試試 python3 -m pip install pygame
)
打開終端機 / Terminal,輸入指令:
pip3 install pygame
如果要同時看很多檔案會比較舒服!link
下載下來後右鍵點選解壓縮。
cd [位置]
跳到正確的資料夾python3 main.py
現在你應該要看到下面這個畫面
如果視窗大小對你的電腦來說太大的話,可以修改config.py
裡面的 unit
。
現在你可以按按看上下左右
動不了?很正常,因為你的作業是讓他動起來
怎麼做?趕快把 Handler.py
填起來吧!
建議可以看看整份 code 寫了哪些東西
shot.status[y][x] == 0 -> 沒東西
shot.status[y][x] == 1 -> 移動中的方塊
shot.status[y][x] == 2 -> 已被佔據
以下只是把相關性比較大的工作綁在一起,請按照你覺得合理的順序做 (?
為了可讀性,建議多使用config
內的常數
繳交時只須繳交Handler.py
,其他檔案除了main.py
的DEBUG = True
那行以外你們不太需要去動,但鼓勵你們研究看看。詳細的pygame用法會在二階教
建議早點開始做,這樣有問題時才有時間找講師或同學討論喔
為了方便你們寫作業,注意到main.py
第8行是DEBUG = True
,最後會用DEBUG = False
來評分
moveLeft
moveRight
shot.status[y][x] == 2
)如果你做完了可以把main.py
第8行改成DEBUG = False
試試
drop
instantDrop
fixPiece
函數)fixPiece
函數)instantDrop
,方塊可以直接落地,適合沒耐心的人(?rotate
isDefeat
如果新方塊生出來的地方已經被佔據就要return True
,否則return False
isDefeat
,方塊滿出來時會game overeliminateFilledRows
分數算法寫在config.py
score_count
: 一次消幾行就加幾分
eliminateFilledRows
,可以正常地把一列消掉可以把你要處理的資料印出來看看
pprint
套件俄羅斯方塊也有世界大賽? 冠軍的手速快到你無法想像! | 啾啾鞋
16 Y/O UNDERDOG vs. 7-TIME CHAMP - Classic Tetris World Championship 2018 Final Round
5 Essential Tips To Look Like A Pro In Tetris
Q: 方塊的格式是什麼?
A: 詳細可以看piece.py
這個檔案,他是一個物件,簡單來說就是存放一些資料的東西。在大作業中需要直接去操作的值基本上只有y
, x
, rotation