1.多人模式/回合限制/重新開始的功能增加
多人模式 + 回合限制 + 重新開始遊戲的實作範例
import java.util.Scanner;
public class Ch7_5_Multiplayer {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean playAgain;
do {
// 設定玩家數量
System.out.print("請輸入玩家數量: ");
int numPlayers = sc.nextInt();
// 設定回合數限制
System.out.print("請輸入每位玩家的最大猜測次數: ");
int maxAttempts = sc.nextInt();
// 記錄每個玩家的猜測次數
int[] attempts = new int[numPlayers];
int[] guesses = new int[numPlayers];
boolean isGuessed = false;
int target = (int) (Math.random() * 100 + 1); // 產生1~100的隨機數字
// 進行遊戲
while (!isGuessed) {
for (int i = 0; i < numPlayers; i++) {
if (attempts[i] < maxAttempts) {
System.out.print("玩家" + (i + 1) + ",請輸入猜測值 => ");
guesses[i] = sc.nextInt();
attempts[i]++;
if (guesses[i] == target) {
System.out.println("玩家" + (i + 1) + " 猜中數字: " + target + ",共用了 " + attempts[i] + " 次!");
isGuessed = true;
break;
} else if (guesses[i] > target) {
System.out.println("數字太大!");
} else {
System.out.println("數字太小!");
}
} else {
System.out.println("玩家" + (i + 1) + " 已經用完了所有的猜測次數。");
}
}
// 檢查是否所有玩家都已經用完了猜測次數
boolean allPlayersOutOfAttempts = true;
for (int i = 0; i < numPlayers; i++) {
if (attempts[i] < maxAttempts) {
allPlayersOutOfAttempts = false;
break;
}
}
if (allPlayersOutOfAttempts) {
System.out.println("所有玩家都用完了猜測次數。遊戲結束,沒有人猜中目標數字。");
break;
}
}
// 允許重新開始遊戲
System.out.print("是否要重新開始遊戲?(y/n): ");
char response = sc.next().charAt(0);
playAgain = (response == 'y' || response == 'Y');
} while (playAgain);
System.out.println("感謝遊玩!");
}
}
2.新增功能的說明
這樣的改寫允許你靈活地設置玩家數量、控制每位玩家的猜測次數,並在遊戲結束後選擇是否重新開始遊戲,讓遊戲更具挑戰性和可玩性。
2.新增及重複練習的語法
for 迴圈:
• 功能: 迴圈用於多玩家模式下,每個玩家依次進行猜測。
• 語法:
for (int i = 0; i < numPlayers; i++) {
// 每個玩家依次進行猜測
}
這個 for 迴圈依據玩家數量 numPlayers 來控制遊戲流程,讓每個玩家依次輸入猜測值。
int[] 陣列:
• 功能: 用來記錄每個玩家的猜測次數和猜測值。
• 語法:
int[] attempts = new int[numPlayers];
int[] guesses = new int[numPlayers];
這裡使用了兩個陣列 attempts 和 guesses,分別用來記錄每個玩家的猜測次數和他們的猜測值。陣列的大小取決於 numPlayers,即玩家的數量。
條件判斷 (if-else 語句):
• 功能: 用於檢查每位玩家的猜測是否正確,並決定是否結束遊戲。
• 語法:
if (guesses[i] == target) {
System.out.println("玩家" + (i + 1) + " 猜中數字: " + target + ",共用了 " + attempts[i] + " 次!");
isGuessed = true;
break;
} else if (guesses[i] > target) {
System.out.println("數字太大!");
} else {
System.out.println("數字太小!");
}
當玩家的猜測值與目標數字匹配時,遊戲結束,並使用 break 語句跳出迴圈。
break 語句:
• 功能: 在玩家猜中數字或所有玩家都用完了猜測次數時,提前結束 for 或 while 迴圈。
• 語法:
break;
在 if 判斷玩家猜中目標數字後,使用 break 語句結束迴圈並結束遊戲。
回合數限制判斷:
• 功能: 檢查每位玩家的猜測次數是否達到設定的上限。
• 語法:
if (attempts[i] < maxAttempts) {
// 玩家可以繼續猜測
} else {
System.out.println("玩家" + (i + 1) + " 已經用完了所有的猜測次數。");
}
判斷每位玩家的猜測次數是否已經達到 maxAttempts。如果是,該玩家將不能再進行猜測。
檢查所有玩家是否用完猜測次數:
• 功能: 判斷是否所有玩家都已經用完了猜測次數,並在這種情況下結束遊戲。
• 語法:
boolean allPlayersOutOfAttempts = true;
for (int i = 0; i < numPlayers; i++) {
if (attempts[i] < maxAttempts) {
allPlayersOutOfAttempts = false;
break;
}
}
if (allPlayersOutOfAttempts) {
System.out.println("所有玩家都用完了猜測次數。遊戲結束,沒有人猜中目標數字。");
break;
}
使用一個迴圈來檢查每位玩家是否都用完了猜測次數,如果所有玩家都用完了猜測次數,則遊戲結束並顯示平局訊息。
重新開始遊戲的選擇 (do-while 迴圈):
• 功能: 允許玩家在遊戲結束後選擇是否重新開始遊戲。
• 語法:
do {
// 遊戲邏輯
System.out.print("是否要重新開始遊戲?(y/n): ");
char response = sc.next().charAt(0);
playAgain = (response == 'y' || response == 'Y');
} while (playAgain);
使用 do-while 迴圈來控制遊戲流程。當玩家選擇 “y” 或 “Y” 時,遊戲會重新開始;選擇 “n” 則結束遊戲。
(創作想法部分參考生成式軟體ChatGPT)