案例解析
猜数字游戏实现
编制一个程序,用循环控制结构实现简单的猜数字大小游戏。实现任务如下:程序随机分配给客户一个1—100之间的整数;用户输入自己的猜测,程序返回提示信息,提示“猜大了”、“猜小了”和“猜对了”。
# 源文件保存为“GuessNumberGame.java”
import java.util.Scanner;
import java.util.Random;
public class GuessNumberGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
// 生成1-100的随机数
int secretNumber = random.nextInt(100) + 1;
int guess;
int attempts = 0;
System.out.println("欢迎来到猜数字游戏!");
System.out.println("我已经想好了一个1到100之间的数字,来猜猜看吧!");
do {
System.out.print("请输入你的猜测:");
guess = scanner.nextInt();
attempts++;
if (guess > secretNumber) {
System.out.println("猜大了!");
} else if (guess < secretNumber) {
System.out.println("猜小了!");
} else {
System.out.printf("恭喜你,猜对了!你一共猜了%d次。%n", attempts);
}
} while (guess != secretNumber);
scanner.close();
}
}
运行结果
输入一系列猜测数据。
欢迎来到猜数字游戏!
我已经想好了一个1到100之间的数字,来猜猜看吧!
请输入你的猜测:50
猜小了!
请输入你的猜测:75
猜大了!
请输入你的猜测:63
猜小了!
请输入你的猜测:69
恭喜你,猜对了!你一共猜了4次。
代码解析:
- 随机数生成:使用Random类生成1-100的随机整数
- 输入处理:Scanner获取用户输入的数字
- 游戏循环:do-while循环确保至少执行一次猜测
- 比较判断:
- 猜大了:提示"猜大了"
- 猜小了:提示"猜小了"
- 猜对了:显示恭喜信息和猜测次数
- 计数功能:记录并显示玩家猜测次数
限制猜测次数
# 源文件保存为“LimitedAttemptsGame.java”
public class LimitedAttemptsGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int secretNumber = random.nextInt(100) + 1;
int maxAttempts = 7;
int attempts = 0;
System.out.println("你有" + maxAttempts + "次机会猜出1-100之间的数字!");
while (attempts < maxAttempts) {
System.out.print("第" + (attempts+1) + "次猜测:");
int guess = scanner.nextInt();
attempts++;
if (guess == secretNumber) {
System.out.println("太棒了!你用" + attempts + "次猜对了!");
return;
} else if (guess < secretNumber) {
System.out.println("猜小了!");
} else {
System.out.println("猜大了!");
}
}
System.out.println("很遗憾,机会用完了!正确答案是:" + secretNumber);
scanner.close();
}
}
运行结果
输入一系列猜测数据。
你有7次机会猜出1-100之间的数字!
第1次猜测:50
猜大了!
第2次猜测:25
猜大了!
第3次猜测:13
猜小了!
第4次猜测:19
猜大了!
第5次猜测:16
猜小了!
第6次猜测:16
猜小了!
第7次猜测:17
猜小了!
很遗憾,机会用完了!正确答案是:18
代码特点:
- 限制最多猜测7次
- 显示当前是第几次猜测
- 机会用完显示正确答案
- 增加游戏挑战性
难度分级
# 源文件保存为“DifficultyLevelGame.java”
public class DifficultyLevelGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
System.out.println("选择难度级别:");
System.out.println("1. 简单(1-50)");
System.out.println("2. 普通(1-100)");
System.out.println("3. 困难(1-200)");
System.out.print("请选择(1-3):");
int level = scanner.nextInt();
int range = 100;
switch(level) {
case 1: range = 50; break;
case 2: range = 100; break;
case 3: range = 200; break;
default:
System.out.println("无效选择,默认普通难度");
}
int secretNumber = random.nextInt(range) + 1;
int guess;
int attempts = 0;
System.out.println("欢迎来到猜数字游戏!");
System.out.printf("我已经想好了一个1到%d之间的数字,来猜猜看吧!\n", range);
do {
System.out.print("请输入你的猜测:");
guess = scanner.nextInt();
attempts++;
if (guess > secretNumber) {
System.out.println("猜大了!");
} else if (guess < secretNumber) {
System.out.println("猜小了!");
} else {
System.out.printf("恭喜你,猜对了!你一共猜了%d次。%n", attempts);
}
} while (guess != secretNumber);
scanner.close();
}
}
运行结果
依次输入难度等级和猜测的数据
选择难度级别:
1. 简单(1-50)
2. 普通(1-100)
3. 困难(1-200)
请选择(1-3):1
欢迎来到猜数字游戏!
我已经想好了一个1到50之间的数字,来猜猜看吧!
请输入你的猜测:25
猜大了!
请输入你的猜测:13
猜小了!
请输入你的猜测:19
猜小了!
请输入你的猜测:22
猜大了!
请输入你的猜测:20
恭喜你,猜对了!你一共猜了5次。
代码特点:
- 提供三种难度级别
- 不同难度对应不同数字范围
- 增强游戏可玩性
- 使用switch处理用户选择
操作练习题
添加计分系统
要求:
- 根据猜测次数计算得分
- 猜测次数越少得分越高
- 满分100分,每次猜测扣10分
# 源文件保存为“GuessNumberGame.java”
import java.util.Scanner;
import java.util.Random;
public class GuessNumberGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
// 生成1-100的随机数
int secretNumber = random.nextInt(100) + 1;
int guess;
int attempts = 0;
System.out.println("欢迎来到猜数字游戏!");
System.out.println("我已经想好了一个1到100之间的数字,来猜猜看吧!");
do {
System.out.print("请输入你的猜测:");
guess = scanner.nextInt();
attempts++;
if (guess > secretNumber) {
System.out.println("猜大了!");
} else if (guess < secretNumber) {
System.out.println("猜小了!");
} else {
System.out.printf("恭喜你,猜对了!你一共猜了%d次。%n", attempts);
}
} while (guess != secretNumber);
int maxScore = 100;
int score = maxScore - (attempts - 1) * 10;
if (score < 0) score = 0;
System.out.println("你的得分是:" + score);
scanner.close();
}
}
运行结果
输入一系列猜测数据。
欢迎来到猜数字游戏!
我已经想好了一个1到100之间的数字,来猜猜看吧!
请输入你的猜测:50
猜小了!
请输入你的猜测:75
猜小了!
请输入你的猜测:87
猜大了!
请输入你的猜测:81
恭喜你,猜对了!你一共猜了4次。
你的得分是:70
添加游戏历史记录
要求:
- 记录每轮游戏的猜测数字和结果
- 游戏结束时显示猜测历史
参考代码:
# 源文件保存为“GuessNumberGame.java”
import java.util.Scanner;
import java.util.Random;
import java.util.ArrayList;
public class GuessNumberGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
ArrayList<String> guessHistory = new ArrayList<String>();
// 生成1-100的随机数
int secretNumber = random.nextInt(100) + 1;
int guess;
int attempts = 0;
System.out.println("欢迎来到猜数字游戏!");
System.out.println("我已经想好了一个1到100之间的数字,来猜猜看吧!");
do {
System.out.print("请输入你的猜测:");
guess = scanner.nextInt();
guessHistory.add("第" + attempts + "次:" + guess + " (" +
(guess > secretNumber ? "大了" : "小了") + ")");
attempts++;
if (guess > secretNumber) {
System.out.println("猜大了!");
} else if (guess < secretNumber) {
System.out.println("猜小了!");
} else {
System.out.printf("恭喜你,猜对了!你一共猜了%d次。%n", attempts);
}
} while (guess != secretNumber);
// 游戏结束时显示历史
System.out.println("\n你的猜测历史:");
for (String record : guessHistory) {
System.out.println(record);
}
scanner.close();
}
}
运行结果
输入一系列猜测数据。
欢迎来到猜数字游戏!
我已经想好了一个1到100之间的数字,来猜猜看吧!
请输入你的猜测:50
猜大了!
请输入你的猜测:25
猜大了!
请输入你的猜测:12
猜小了!
请输入你的猜测:19
猜大了!
请输入你的猜测:15
猜小了!
请输入你的猜测:17
猜小了!
请输入你的猜测:18
恭喜你,猜对了!你一共猜了7次。
你的猜测历史:
第0次:50 (大了)
第1次:25 (大了)
第2次:12 (小了)
第3次:19 (大了)
第4次:15 (小了)
第5次:17 (小了)
第6次:18 (小了)
添加数字范围提示
要求:
- 根据玩家猜测动态调整范围提示
- 例如:“数字在50-75之间”
参考代码:
# 源文件保存为“GuessNumberGame.java”
import java.util.Scanner;
import java.util.Random;
public class GuessNumberGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int lowerBound = 1;
int upperBound = 100;
// 生成1-100的随机数
int secretNumber = random.nextInt(100) + 1;
int guess;
int attempts = 0;
System.out.println("欢迎来到猜数字游戏!");
System.out.println("我已经想好了一个1到100之间的数字,来猜猜看吧!");
do {
System.out.print("请输入你的猜测:");
guess = scanner.nextInt();
attempts++;
// 在每次猜测后更新范围
if (guess < secretNumber && guess > lowerBound) {
lowerBound = guess;
} else if (guess > secretNumber && guess < upperBound) {
upperBound = guess;
}
if (guess > secretNumber) {
System.out.println("猜大了!");
System.out.println("提示:数字在" + lowerBound + "到" + upperBound + "之间");
} else if (guess < secretNumber) {
System.out.println("猜小了!");
System.out.println("提示:数字在" + lowerBound + "到" + upperBound + "之间");
} else {
System.out.printf("恭喜你,猜对了!你一共猜了%d次。%n", attempts);
}
} while (guess != secretNumber);
scanner.close();
}
}
运行结果
输入一系列猜测数据。
欢迎来到猜数字游戏!
我已经想好了一个1到100之间的数字,来猜猜看吧!
请输入你的猜测:50
猜大了!
提示:数字在1到50之间
请输入你的猜测:25
猜大了!
提示:数字在1到25之间
请输入你的猜测:13
猜大了!
提示:数字在1到13之间
请输入你的猜测:7
猜大了!
提示:数字在1到7之间
请输入你的猜测:4
猜小了!
提示:数字在4到7之间
请输入你的猜测:5
猜小了!
提示:数字在5到7之间
请输入你的猜测:6
恭喜你,猜对了!你一共猜了7次。