# Kotlin期中作業 請使用Kotlin寫出一個類似 [Nerdle mini](https://mini.nerdlegame.com/) 的遊戲。 # 緊急公告 這是4/16更新的,之前交過的同學可以無視;請幫助教我把你的謎底在第一行印出來,因為有些同學的題目生成有問題,讓題目根本是猜不出來的狀況,讓我的腦細胞死了一些XD 所以請同學先把答案公布一下,不然有時候幫你們Debug會花蠻多時間的。 P.S:現在交的人少,所以我會在時間允許的情況下告訴你發生什麼所以沒過,讓你可以補交,月底人一多就沒有補交的機會囉。 # 說明 ## 範例 ![](https://i.imgur.com/cZXBo9A.png) ![](https://i.imgur.com/bIPyXWR.png) ![](https://i.imgur.com/rFZEuaj.png) ## 要求 你需要: 1. 在程式執行時,隨機產生每次都不一樣的題目,題目必須符合以下要求 1. 只包含一個運算符號(`+-*/`)與一個等於(`=`) - `2**3=8`,錯誤;我們不考慮有兩個或以上運算符號的情況 3. 在數學上必須是成立的 - `7/0=??`,0放在分母是無意義的,在數學上不成立 - `0/7=0`,0放在分子是可以的 - `7*2=15`,回去跟國小數學老師道歉! 4. 所有數字必須是非負整數 - `5-6=-1`是不行的 - `-3+6=3`也不可以 - `30*0=0`是可以的 - 不可有 leading zero,例如 `5+3=08` 是不可以的 5. 長度為六個字 6. 等於必須是在運算符號後面 - `12=3*4`是不行的 - `3*4=12`是可以的 2. 玩家有六條命,輸入六次皆錯誤需要公布答案並結束遊戲 3. 玩家可以輸入 `Q` 來手動結束遊戲 4. 玩家如果輸入的答案不合乎題目格式,要提供錯誤訊息請玩家重新輸入(不扣生命值) 5. 玩家輸入答案後,使用底色告訴玩家哪些字是正確的、放錯位置的、不在題目內的 6. 若玩家輸入與題目一致,恭喜玩家達成遊戲 ## 如何著色 我們會用到三種顏色: - 綠色:位置和數字、符號都是正確的 - 黃色:位置錯誤和數字、符號和題目相符 - 黑色:數字不存在題目之中 ```kotlin val ANSI_BLACK_BACKGROUND = "\u001B[40m" val ANSI_GREEN_BACKGROUND = "\u001B[42m" val ANSI_YELLOW_BACKGROUND = "\u001B[43m" val ANSI_RESET = "\u001B[0m" println("${ANSI_BLACK_BACKGROUND}我會變成黑底白字${ANSI_RESET}我是正常沒有顏色的字") println("${ANSI_GREEN_BACKGROUND}我會變成綠底白字${ANSI_RESET}我是正常沒有顏色的字") println("${ANSI_YELLOW_BACKGROUND}我會變成黃底白字${ANSI_RESET}我是正常沒有顏色的字") ``` ## 簡化題目 1. 不需要有重新開始遊戲的機制 2. 遊戲說明清楚即可,不需要和我的範例一樣 # 提交 > Windows可以使用[Bandicam](https://www.bandicam.com/tw/)來錄影,也可以使用支援Windows、MAC的[OBS](https://obsproject.com/)但比較複雜一些;無論如何千萬不要使用手機對螢幕錄影,拜託![name=黃彥儒] - 拍攝YouTube**解說**你的程式碼並真的玩三次,請確定畫質可以看清楚,以及有清楚錄製你的聲音 - 過程中必須要確認「能判定輸入不合乎格式」、「可提前結束」、「可判斷玩家成功或失敗」 - 將主程式打包好提交到e3 ## 打包方法 請將整個專案壓縮成一個zip檔案 ![](https://i.imgur.com/tPDMN0H.png)