有Java写一个24点小游戏
时间: 2024-06-06 07:08:39 浏览: 84
这是一个简单的Java 24点小游戏示例代码:
import java.util.ArrayList;
import java.util.Scanner;
public class TwentyFourGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎来到24点小游戏!");
while (true) {
ArrayList<Integer> nums = generateNumbers(); // 生成4个1-9之间的随机数
System.out.println("请用这4个数字计算出24,输入q退出游戏:");
System.out.println(nums);
String input = scanner.nextLine();
if (input.equals("q")) {
System.out.println("游戏结束,谢谢参与!");
break;
}
String[] numbers = input.split(" ");
ArrayList<Integer> userNums = new ArrayList<>();
for (String number : numbers) {
userNums.add(Integer.parseInt(number));
}
if (isCorrectAnswer(userNums, nums)) {
System.out.println("恭喜你,答对了!");
} else {
System.out.println("很遗憾,答错了!");
}
}
}
// 生成4个1-9之间的随机数
public static ArrayList<Integer> generateNumbers() {
ArrayList<Integer> nums = new ArrayList<>();
for (int i = 0; i < 4; i++) {
nums.add((int) (Math.random() * 9) + 1);
}
return nums;
}
// 判断用户输入的答案是否正确
public static boolean isCorrectAnswer(ArrayList<Integer> userNums, ArrayList<Integer> nums) {
if (userNums.size() != 4) {
return false;
}
for (Integer num : userNums) {
if (!nums.contains(num)) {
return false;
}
}
ArrayList<Double> results = new ArrayList<>();
calculate(userNums, results);
for (Double result : results) {
if (result == 24) {
return true;
}
}
return false;
}
// 递归计算所有可能的结果
public static void calculate(ArrayList<Integer> nums, ArrayList<Double> results) {
if (nums.size() == 1) {
results.add(nums.get(0) * 1.0);
return;
}
for (int i = 0; i < nums.size(); i++) {
for (int j = i + 1; j < nums.size(); j++) {
int x = nums.get(i);
int y = nums.get(j);
ArrayList<Integer> newNums = new ArrayList<>(nums);
newNums.remove(j);
newNums.remove(i);
newNums.add(x + y);
calculate(newNums, results);
newNums.set(newNums.size() - 1, x - y);
calculate(newNums, results);
newNums.set(newNums.size() - 1, y - x);
calculate(newNums, results);
newNums.set(newNums.size() - 1, x * y);
calculate(newNums, results);
if (y != 0) {
newNums.set(newNums.size() - 1, x * 1.0 / y);
calculate(newNums, results);
}
if (x != 0) {
newNums.set(newNums.size() - 1, y * 1.0 / x);
calculate(newNums, results);
}
}
}
}
}
阅读全文