軟體開發教學筆記(二)使用Python打造Wordle猜字遊戲
--
Wordle是近年來相當流行的小遊戲,本質上和小時候玩的1A2B猜數字遊戲差不多,但是解答共有一萬多種可能,讓遊戲的難度大幅提升。Wordle並不只是個遊戲,每人每天都是一樣的謎底,你猜到解答後可以和朋友分享你的”戰況”,讓這個遊戲在社群間容易散播,是它成功的關鍵。
這篇文章會帶領你使用先前設定好的環境,來開發這個小遊戲。
Python學習資源
這個小遊戲雖然簡單,但還是需要基本的語法知識,推薦以下資源來學習Python。
- Datacamp:有影片+線上環境,只需要瀏覽器就可以學習,雖然是英文的不過還是很推薦。
- 菜鳥教程:文章型的教學。
- Python for Beginners — Learn Python in 1 Hour
這篇文章的內容會用到列表、函式、迴圈。
拆解問題
Wordle猜字遊戲可以被拆解成幾個簡單的步驟來搭建。
- 隨機挑選謎底
- 獲取使用者輸入
- 比對輸入與謎底
🌟程式的切入點
if __name__ == "__main__":
...
...
寫Python時要養成習慣先在文件中加入這行,並在區塊中開始寫主程式。
隨機挑選謎底
英文當中5個字元的單字有非常多,所以我們可以藉助開源的資料來使用。下載其中的word檔,就準備好所有的謎底資料了。
☝️這行程式碼會開啟相同目錄下的words
檔案,讀取檔案資料後將一行作為一個資料單位存進列表中。
️️️☝️導入random
模組,使用其中的sample()
函式來隨機從指定的列表當中取樣,第一項參數是要取樣的列表,第二項是要取樣的數量,這裡最後我加了一個[0]
,因為sample()
得到的回傳是一個列表(即使只有一項),而我只需要其中的值。
記得把import
寫在程式碼的最上方,養成好習慣。
獲取使用者輸入
☝️非常的簡單,只需這一行,程式便會停留並等待使用者輸入,輸入的值會作為字串回傳。
比對輸入與謎底
☝️我們需要以字元為單位來判斷,而字串內的字元可以用列表的方式查找,例如:user_input[2]
,就是user_input
這個字串的第三個字元。
使用for迴圈來檢查每一個字元,先以user_input[i] == answer[i]
來判斷在相同的位置,輸入與謎底的字元是否相同,若不同,則用user_input[i] in answer
來判斷輸入的字元是否包含在謎底內,最後都不符合的情況代表這個單字不存在。
將以上三個部分結合在一起,就完成一個簡單的Wordle小遊戲了!但似乎還有一些可以精進的地方,可以比照一下Wordle官網的規則說明,當作一個Python練習題吧。
下一篇會教大家怎麼安裝套件並寫一個即時的人物去背程式。