javascript - 使用 JavaScript 对象的猜人程序

标签 javascript html

我正在尝试学习 JavaScript,因此我正在做这个项目来练习。我试图弄清楚这些物体和所有东西是如何工作的。基本上我想要的是一个人的列表,作为对象,并为每个人分配了某些属性。然后它会问一堆问题,直到猜出你正在想的人。我四处搜寻,但无法真正找到具体如何做到这一点。这是我到目前为止所拥有的:

function person(name,age,eyecolor,gender,eyeglasses)
{
    this.name=name;
    this.age=age;
    this.eyecolor=eyecolor;
    this.gender=gender;
    this.eyeglasses=eyeglasses;
}

var Dad=new person("Dad",45,"blue","male",true);
var Mom=new person("Mom",48,"blue","female",false);
var Brother=new person("Brother",16,"blue","male",false);
var Sister=new person("Sister",15,"green","female",false);

function askQuestion (){

}

function begin(){
    askQuestion();
}

现在我想要的是一种方法,我可以在 askQuestion 函数中,根据我们迄今为止对该人的了解从列表中选择一个问题。然后重新计算可能是谁,然后选择另一个问题来问,直到我们知道是谁。希望我已经说清楚了。我该怎么做呢?

最佳答案

这有点像游戏“Guess Who?”不是吗?好吧,这就是你要做的:

首先,您为一个人创建一个构造函数。你说得对。

function Person(name, age, eyecolor, gender, eyeglasses) {
    this.name = name;
    this.age = age;
    this.eyecolor = eyecolor;
    this.gender = gender;
    this.eyeglasses = eyeglasses;
}

然后您创建可能的人员列表。列表意味着数组。

var people = [
    new Person("Dad", 45, "blue", "male", true),
    new Person("Mom", 48, "blue", "female", false),
    new Person("Brother", 16, "blue", "male", false),
    new Person("Sister", 15, "green", "female", false)
];

然后你不断地问问题来猜测这个人是谁。不断询问意味着使用循环。我们将继续循环,直到列表中只剩下一个人(我们正在寻找的人):

while (people.length > 1) askQuestion();

接下来我们定义askQuestion函数。首先我们需要选择要问什么问题。所以我们列出了一个问题 list 。这又是一个数组。我们还将存储要测试的属性以及 truefalse 条件的结果。

var questions = [
    ["eyecolor", "blue", "green", "Does the person have blue eyes?"],
    ["gender", "male", "female", "Is the person a male?"],
    ["eyeglasses", true, false, "Does the person wear eyeglasses?"]
];

您只需知道这三个问题即可确定此人是谁。接下来我们记录当前正在询问哪个问题(0、1 或 2)。

var question_no = 0;

最后我们提出问题来确定此人是谁:

function askQuestion() {
    var question = questions[question_no++];
    var answer = confirm(question[3]) ? question[1] : question[2];
    var predicate = question[0];

    people = people.filter(function (person) {
        return person[predicate] === answer;
    });
}

在这里,我们向用户提出一个问题,确定他选择的答案,并使用该信息来过滤与给定描述相匹配的人员。最后我们得到一个人:

alert("The person you're thinking about is " + people[0].name + ".");

请在此处查看工作演示:http://jsfiddle.net/9g6XU/

关于javascript - 使用 JavaScript 对象的猜人程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134110/

相关文章:

html - 如何使第一个菜单链接看起来好像悬停在悬停另一个链接之前

javascript - 如何将 "tags"与 Select2 一起使用

javascript - 在 Vue 组件实例上更新 Prop 的正确方法是什么

javascript - 如何使用 jquery 禁用特定元素上的滚动

javascript - 向简单的 HTML5 游戏添加按钮

javascript - 在 iframe 中提交表单时滚动到 iframe 顶部

javascript - ionic 2 页面和模态之间的依赖注入(inject)

javascript - 如何使用 Webpack 5 和 Babel 7 创建 IE11 Bundle

javascript - 如何将 ACE 与我的 ASP.NET MVC 应用程序一起使用?

html - 如何设置 <s :property> value to Struts 2 Checkbox in Iterator and give all the selected check boxes value in Action List