我正在尝试制作一个猜谜游戏,计算机在每次猜测后都会变得更加智能.这是一个示例运行:
(计算机正在猜测你在想什么动物)
电脑:你想的动物有腿吗?
球员:是的
电脑:它是狗吗?
球员:是的
电脑:我赢了!你想再玩一次吗?
球员:是的
电脑:你想的动物是否有腿
球员:是的
电脑:它是狗吗?
球员:没有
电脑:我放弃了.你的动物是什么?
球员:马
计算机:键入一个问题,答案对于狗而言是肯定的,但对于马则不是
球员:它住在一个房子里吗?
电脑:你想再玩一次吗?
球员:是的
电脑:你想的动物有腿吗?
球员:是的
电脑:它住在房子里吗?
球员:没有
电脑:这是一匹马吗?
球员:没有
电脑:我放弃了
等等
到目前为止,这是我的代码:
import java.util.*;
public class DoesItHaveLegs {
public static void main(String[] args) {
ArrayList<String> questions = new ArrayList<String>();
ArrayList<String> animals = new ArrayList<String>();
Scanner input = new Scanner(System.in);
questions.add("Does it have legs");
animals.add("dog");
String userAnimal;
String userQuestion = "";
String giveUp = "I give up. What animal was it?";
String userAnswer = "YES";
while(userAnswer.equals("YES")) {
System.out.println(animals);
System.out.println(questions);
int q = 0;
int a = 0;
while (q < questions.size()) {
System.out.println(questions.get(q));
userAnswer = input.nextLine().toUpperCase();
if(userAnswer.equals("YES")) {
System.out.println("Is it a " + animals.get(a));
userAnswer = input.nextLine().toUpperCase();
while(a < animals.size()) {
if(userAnswer.equals("YES")) {
System.out.println("Yay! I win. Do you want to play again?");
userAnswer = input.nextLine().toUpperCase();
}
else if(a < animals.size()) {
a++;
}
else {
System.out.println("I give up. What animal is it?");
userAnimal = input.nextLine();
animals.add(userAnimal);
}
}
}
else {
if(q < questions.size()) {
q++;
}
}
}
System.out.println("I give up. What animal is it?");
userAnimal = input.nextLine();
animals.add(userAnimal);
System.out.println("Type in a question for which the answer is yes for " + animals.get(a) + " but no for " + userAnimal);
userQuestion = input.nextLine();
questions.add(userQuestion);
System.out.println("Do you want to play again?");
userAnswer = input.nextLine().toUpperCase();
}
}
}
我假设有一种更简单的方法来实现这一点(可能是二叉树),但我无法弄明白.我不想要完整的解决方案,我只想指出正确的方向.
最佳答案 首先,尝试创建更小的方法,这样一切都更容易阅读.
第二个通知,你添加问题和动物,但不包括任何匹配这些的东西.你的计算机只是猜测一个随机的动物,从不排除任何动物.
例:
Q1: Yes
Animals: Horse, Dog
Q1: No
Animals: Horse, Dog
如果Q1与Dog有关,那么如果之后没有正确猜到,你应该从可能的答案中删除它.