java实现猜数字游戏。由四个不同数码(0-9)组成的数,数字和位置都正确,则标记位A,数字正确而位置不正确,则标记为B。 如正确答案为5234,猜的是5346,则提示:1A2B(及1个A,两个B),即5数字和位置都正确,3和4数字正确,但位置不正确。
时间: 2024-10-15 12:06:50 浏览: 25
Java小游戏之数字彩虹雨
5星 · 资源好评率100%
在Java中实现一个猜数字游戏,我们可以按照以下步骤设计:
1. **创建一个数字谜题类**:首先,定义一个`MysteryNumber`类,它包含四个隐藏的数字,并用布尔数组表示每个数字的位置是否正确。
```java
public class MysteryNumber {
private int[] numbers = new int[4];
private boolean[][] positions;
// 构造函数设置初始随机数字和位置
public MysteryNumber() {
for (int i = 0; i < 4; i++) {
numbers[i] = (int) (Math.random() * 10);
positions = new boolean[4][4]; // 初始化所有位置为未匹配
}
}
// 检查猜测并返回结果
public String guess(int[] guess) {
for (int i = 0; i < 4; i++) {
if (guess[i] == numbers[i]) {
positions[i][i] = true;
return formatResult(guess);
} else {
for (int j = 0; j < 4; j++) {
if (!positions[i][j] && guess[i] == numbers[j]) {
positions[i][j] = true;
positions[j][i] = false; // 更新位置,保证唯一对应
break;
}
}
}
}
return formatResult(guess);
}
private String formatResult(int[] guess) {
StringBuilder result = new StringBuilder();
int countA = 0, countB = 0;
for (boolean value : positions) {
for (boolean pos : value) {
if (pos) {
countA++;
} else if (!pos) {
countB++;
}
}
}
return String.format("%dA%dB", countA, countB);
}
}
```
2. **主程序**:在主函数中,创建`MysteryNumber`实例,获取用户输入的猜测,并打印反馈结果。
```java
public static void main(String[] args) {
MysteryNumber game = new MysteryNumber();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入你的猜测(0-9之间):");
int[] guess = {scanner.nextInt(), scanner.nextInt(), scanner.nextInt(), scanner.nextInt()};
System.out.println(game.guess(guess));
if (Arrays.stream(game.numbers).distinct().count() == 4) {
System.out.println("恭喜你,猜对了!");
break;
}
}
scanner.close();
}
```
在这个游戏中,玩家需要输入一个四位数字,然后程序会检查猜测并显示结果(A的数量和B的数量)。如果玩家猜对所有数字和位置,游戏结束。你可以通过运行这个程序来体验猜数字游戏的过程。
阅读全文