Java 实现精美的猜数字游戏:从入门到进阶
·
猜数字游戏是编程入门的经典案例,它不仅能帮助初学者掌握基本语法,还能让我们理解程序逻辑和用户交互的设计思路。今天,我们将一起用 Java 实现一个界面精美、功能完善的猜数字游戏。
游戏设计思路
我们的猜数字游戏将包含以下核心功能:
- 系统随机生成 1-100 之间的随机数
- 允许玩家输入猜测的数字
- 给出猜大了 / 猜小了的提示
- 记录猜测次数
- 猜对后显示祝贺信息和猜测次数
- 支持多轮游戏,玩家可以选择继续或退出
- 美观的控制台输出格式
完整代码实现
java
运行
import java.util.Random;
import java.util.Scanner;
public class GuessingGame {
// 游戏相关常量
private static final int MIN_NUMBER = 1;
private static final int MAX_NUMBER = 100;
private static final String LINE_SEPARATOR = "======================================";
private Random random;
private Scanner scanner;
public GuessingGame() {
random = new Random();
scanner = new Scanner(System.in);
}
public void start() {
printWelcomeMessage();
boolean playAgain;
do {
playRound();
System.out.print("\n想再玩一次吗?(y/n): ");
String response = scanner.next().trim().toLowerCase();
playAgain = response.startsWith("y");
} while (playAgain);
printGoodbyeMessage();
scanner.close();
}
private void playRound() {
int targetNumber = generateTargetNumber();
int attempts = 0;
boolean hasGuessedCorrectly = false;
System.out.println("\n新游戏开始!我已经想好了一个" + MIN_NUMBER + "到" + MAX_NUMBER + "之间的数字。");
System.out.println("看看你需要多少次才能猜到它!");
while (!hasGuessedCorrectly) {
int guess = getUserGuess();
attempts++;
if (guess < targetNumber) {
System.out.println("猜小了!再试试更大的数字。");
} else if (guess > targetNumber) {
System.out.println("猜大了!再试试更小的数字。");
} else {
hasGuessedCorrectly = true;
printSuccessMessage(attempts);
}
}
}
private int generateTargetNumber() {
return random.nextInt(MAX_NUMBER - MIN_NUMBER + 1) + MIN_NUMBER;
}
private int getUserGuess() {
int guess = 0;
boolean validInput = false;
while (!validInput) {
System.out.print("\n请输入你的猜测 (" + MIN_NUMBER + "-" + MAX_NUMBER + "): ");
if (scanner.hasNextInt()) {
guess = scanner.nextInt();
if (guess >= MIN_NUMBER && guess <= MAX_NUMBER) {
validInput = true;
} else {
System.out.println("请输入" + MIN_NUMBER + "到" + MAX_NUMBER + "之间的数字!");
}
} else {
System.out.println("输入无效!请输入一个整数。");
scanner.next(); // 清除无效输入
}
}
return guess;
}
private void printWelcomeMessage() {
System.out.println(LINE_SEPARATOR);
System.out.println(" 欢迎来到猜数字游戏 ");
System.out.println(LINE_SEPARATOR);
System.out.println("游戏规则:");
System.out.println("1. 系统会随机生成一个" + MIN_NUMBER + "到" + MAX_NUMBER + "之间的整数");
System.out.println("2. 你需要猜测这个数字是多少");
System.out.println("3. 系统会提示你猜大了还是猜小了");
System.out.println("4. 直到你猜对为止,看看你需要多少次");
System.out.println(LINE_SEPARATOR);
}
private void printSuccessMessage(int attempts) {
System.out.println("\n" + LINE_SEPARATOR);
System.out.println("恭喜你猜对了!");
System.out.println("你一共猜了 " + attempts + " 次。");
// 根据猜测次数给出评价
if (attempts <= 5) {
System.out.println("太厉害了!简直是猜数字大师!");
} else if (attempts <= 10) {
System.out.println("很不错!继续加油!");
} else {
System.out.println("还可以更好哦!下次试试减少猜测次数吧!");
}
System.out.println(LINE_SEPARATOR);
}
private void printGoodbyeMessage() {
System.out.println("\n" + LINE_SEPARATOR);
System.out.println(" 感谢游玩猜数字游戏!");
System.out.println(" 下次再见!");
System.out.println(LINE_SEPARATOR);
}
public static void main(String[] args) {
GuessingGame game = new GuessingGame();
game.start();
}
}
代码解析
这个猜数字游戏采用了面向对象的设计思想,将不同的功能封装在不同的方法中,使代码结构清晰、易于维护。
-
类结构:我们创建了
GuessingGame类,包含了游戏所需的所有功能。 -
核心组件:
Random类:用于生成随机目标数字Scanner类:用于接收用户输入
-
主要方法:
start():游戏入口,控制游戏的整体流程playRound():执行一轮游戏的逻辑generateTargetNumber():生成目标数字getUserGuess():获取并验证用户输入- 各类
printXXXMessage()方法:负责输出格式化的信息
-
用户体验优化:
- 输入验证:确保用户输入的是有效范围内的整数
- 清晰的提示信息:告诉用户猜大了还是猜小了
- 结果评价:根据猜测次数给予不同的评价
- 友好的欢迎和告别界面
游戏扩展思路
这个基础版本的猜数字游戏还可以进行很多扩展:
- 难度级别:增加不同难度,如简单 (1-50)、中等 (1-100)、困难 (1-200)
- 计时功能:记录每轮游戏的用时
- 历史记录:保存玩家的最佳成绩(最少猜测次数)
- 多人模式:允许多个玩家轮流猜测,比拼谁用的次数少
- 图形界面:使用 Swing 或 JavaFX 制作图形界面版本
总结
通过实现这个猜数字游戏,我们学习了 Java 的基本语法、控制流、用户输入输出以及面向对象的编程思想。这个游戏虽然简单,但包含了一个完整程序的基本结构:初始化、接收输入、处理逻辑、输出结果。
更多推荐

所有评论(0)