您現在的位置是:首頁 > 單機遊戲首頁單機遊戲
Java練習:一個猜數遊戲
- 2021-12-24
遊戲次數怎麼說
@Author : By Runsen
效果展現
猜數字遊戲是一個簡單,有趣的小遊戲。遊戲者透過輸入一個指定區間的數字,與系統產生的隨機數進行對比,然後輸出相應的結果。
遊戲執行時產生一個0-10之間的隨機整數,要求使用者從控制檯輸入數字
若輸入的數字比產生的數字小,則輸出:“太小了,再大一點!”;
若輸入的數字比產生的數字大,則輸出:“太大了,再小一點!”,
若輸入的數字和產生的數字相等,則輸出:“恭喜你猜對了!”然後退出程式
功能要求
猜數字:生成一個指定範圍內的隨機正整數,從命令列讀取一個整數,如果和隨機數相同,就 算猜中。
固定隨機數的範圍
支援每次猜數字遊戲的猜測次數,在指定次數內沒猜對,則猜數字失敗,否則就是成功。
可以支援退出遊戲
輸出剩餘的猜測次數
每次猜測後,如果未猜中,則提示本次猜測的數字比目標數字大還是小
遊戲結束後,輸出猜數字遊戲的統計
沒有猜中,要輸出這次的目標數字
可以設定隨機數的範圍,可以設定最大猜測次數
功能分析
第一,需要是設定猜數的範圍,和次數,如果超過這個次數就直over了。
第二,還有統計每次遊戲的次數和猜中游戲的次數
第三,如果輸入-1就是結束遊戲,因此需要一個變數判斷是不是在運行遊戲。
最後,就是需要透過 Math。random生成一個隨機數,判斷猜數是不是相等,相等就是猜中,沒有就次數加一。
第一步
我就設定1到8,一共猜數的次數是五次,
// 建立Scanner從控制檯讀取輸入Scanner in = new Scanner(System。in);// 遊戲設定int rangeStart = 1;int rangeEnd = 8;int guessTotal = 5;
第二步
// 遊戲統計int totalGameCount = 0;int totalCorrectCount = 0;
第三步
boolean stopGame = false;while (!stopGame) { // 初始化本次遊戲的變數 System。out。println(“=================== 猜 數 字 ===================”); System。out。println(“目標數已經生成,數字在” + rangeStart + “到” + rangeEnd + “之間,” + “不包括這兩個數。共有” + guessTotal + “次猜測的機會。輸入-1隨時結束遊戲。”); // 本次遊戲是否開始了 boolean gameStart = true; // 本次遊戲是否開始了 boolean gameStart = true; // 本次是否猜中數字 boolean guessCorrect = false; while (guessLeft > 0) {}
最後一步
最後一步,一步的邏輯比較複雜,我直接上所有的程式碼
import java。util。Scanner;public class GuessNumber { public static void main(String[] args) { // 建立Scanner從控制檯讀取輸入 Scanner in = new Scanner(System。in); // 遊戲設定 int rangeStart = 1; int rangeEnd = 8; int guessTotal = 5; // 遊戲統計 int totalGameCount = 0; int totalCorrectCount = 0; // 是否結束遊戲 boolean stopGame = false; while (!stopGame) { // 初始化本次遊戲的變數 // 遊戲次數 int guessLeft = guessTotal; // 區間 int mod = rangeEnd - rangeStart; // 隨機數 0到1的小數 double randNum = Math。random(); System。out。println(randNum); // 求餘數, 保證是0到8 int num = ((int) (randNum * rangeEnd * 100)) % mod; System。out。println(num); num += rangeStart; System。out。println(num); // 存在 num等於8或者1的清空 if (num <= rangeStart) { num = rangeStart + 1; } if (num >= rangeEnd) { num = rangeEnd - 1; } System。out。println(“=================== 猜 數 字 ===================”); System。out。println(“目標數已經生成,數字在” + rangeStart + “到” + rangeEnd + “之間,” + “不包括這兩個數。共有” + guessTotal + “次猜測的機會。輸入-1隨時結束遊戲。”); // 本次遊戲是否開始了 boolean gameStart = true; // 本次是否猜中數字 boolean guessCorrect = false; while (guessLeft > 0) { System。out。println(“還有” + guessLeft + “次機會,請輸入猜測的數字,回車確認”); int guessNum = in。nextInt(); // 輸入-1,結束遊戲 if (guessNum == -1) { stopGame = true; break; } if (guessNum <= rangeStart || guessNum >= rangeEnd) { System。out。println(“請輸入在” + rangeStart + “到” + rangeEnd + “之間,的數字,不包括這兩個數。”); continue; } // 只要至少猜過一次,就算玩過了。 if (gameStart) { totalGameCount++; gameStart = false; } // 可以用的猜測次數減1 guessLeft——; if (guessNum == num) { totalCorrectCount++; guessCorrect = true; System。out。println(“恭喜你猜對了!這次的數字就是” + num + “。本次你共猜了” + (guessTotal - guessLeft) + “次。”); break; } else if (guessNum > num) { System。out。println(“猜測的數字比目標數字大。”); } else { System。out。println(“猜測的數字比目標數字小。”); } } if (!guessCorrect) { System。out。println(“本次的目標數字是” + num + “。這次沒有猜中。”); } } System。out。println(“共進行了” + totalGameCount + “次遊戲,其中正確的為” + totalCorrectCount + “次”); }}