學習軌道
/
Java
Java
/
練習
/
猜字遊戲
猜字遊戲

猜字遊戲

困難

說明

使用函式反應式程式設計來實作 Hangman 遊戲的邏輯。

Hangman 是一款簡單的猜字遊戲。

函式反應式程式設計是一種撰寫互動式程式的方式。它和一般觀點的差異在於,你不會寫「按下按鈕時就把計數器加一」,而是寫「計數器的值,等於按鈕被按下的次數總和」。

使用函式反應式程式設計來實作 Hangman 背後的基本邏輯。為此,你需要安裝一套函式反應式程式設計的函式庫,這部分的說明會寫在這個練習所屬語言/軌道的專屬檔案裡。

提示

函式式程式設計的一大重點,就是讓函式不帶副作用,不必擔心函式偷偷改了哪些看不見的物件。

響應式程式設計則不同:不是讓某個元件主動去找工作,而是把工作推送給該元件。這和回呼很像,但層級高得多,抽象能力也更強大。響應式程式設計很常和函式式程式設計一起使用。

在這個練習中,我們會使用 RxJava,這是響應式程式設計中相當知名的函式庫,提供 Java API。

這個練習模擬的情境,是一個應用程式會接收兩種輸入:

  • 遊戲引擎傳來的、要猜的新單字,
  • 玩家選出的字母。

這兩種輸入都是用 Observables 實作的,也就是使用 io.reactivex.Observable 這個類別。 基本上,你可以訂閱一個Observable,對在某處產生的值做出「反應」。舉例來說,當遊戲引擎偵測到新遊戲開始時,就會推送新的單字;或是鍵盤事件會產生字母輸入。
不過許多響應式框架都提供了強大的抽象機制,例如map可以改變收到的輸入,或是combine能把一個或多個Observable合併在一起。

Output類別是這個練習處理後預期得到的結果,讓前端不必自行保存任何形式的資料,就能顯示遊戲的完整狀態,因此也讓它具有函式風格。
在這個練習中,你必須設法運用這兩種輸入,產生這種以Observable形式呈現的輸出。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Java Exercism

準備好開始 猜字遊戲 了嗎?

註冊 Exercism,透過 26 個概念158 個練習 和真人引導來學習並精通 Java,全部免費。