JavaScript游戏-如何自动调用对象的新实例

JavaScript游戏-如何自动调用对象的新实例,javascript,Javascript,我正在学习JavaScript组合而不是继承,我正在努力学习一些概念。一种是,游戏向用户提供随机数量的狗,然后提示他们输入狗的数量 如果他们答对了,他们就得一分,然后再给另外一些狗 我不知道的是如何每次都产生新的狗。以下代码是简化的代码设置: var dog = function dog(state) { return { create: function create() { console.log('Create the dogs'); this.dogI

我正在学习JavaScript组合而不是继承,我正在努力学习一些概念。一种是,游戏向用户提供随机数量的狗,然后提示他们输入狗的数量

如果他们答对了,他们就得一分,然后再给另外一些狗

我不知道的是如何每次都产生新的狗。以下代码是简化的代码设置:

var dog = function dog(state) {
  return {
    create: function create() {
      console.log('Create the dogs');
      this.dogIsCreated();
    },
    dogIsCreated: function dogIsCreated() {
      console.log('How many dogs do you see?');
    }
  }
}

var questionOne = dog({number: 3}).create();
一旦他们选择了正确的号码,我需要有效地拨打:

var questionTwo = dog({number: 6}).create();
这个数字本身只是对随机数生成器的调用,但我如何自动调用问题二呢?我甚至不知道从哪里开始


非常感谢

这种使用数组的方法应该提供更好的可访问性

var dog = function dog(state) {
  return {
    answer: state.number,
    create: function create() {
      console.log('Create the dogs');
      this.dogIsCreated();
    },
    dogIsCreated: function dogIsCreated() {
      console.log('How many dogs do you see?');
    }
}
var currentQuestion = 0;
var question = [];
function nextQuestion() {
    if (currentQuestion > 0) {
      //to access the last question use question[currentQuestion] e.g. question[currentQuestion].answer
    }
    question.push(dog({number: 6}).create());
    currentQuestion++;
}

使用数组的这种方法应该提供更好的可访问性

var dog = function dog(state) {
  return {
    answer: state.number,
    create: function create() {
      console.log('Create the dogs');
      this.dogIsCreated();
    },
    dogIsCreated: function dogIsCreated() {
      console.log('How many dogs do you see?');
    }
}
var currentQuestion = 0;
var question = [];
function nextQuestion() {
    if (currentQuestion > 0) {
      //to access the last question use question[currentQuestion] e.g. question[currentQuestion].answer
    }
    question.push(dog({number: 6}).create());
    currentQuestion++;
}

“纠正错误”的操作是由于某个事件而发生的。您需要钩住这个事件,确定true/false,并在正确的时候调用
dog({number:x})


如果您的要求比这更复杂,请澄清您的问题。谢谢。

由于某个事件而发生“纠正错误”操作。您需要钩住这个事件,确定true/false,并在正确的时候调用
dog({number:x})


如果您的要求比这更复杂,请澄清您的问题。谢谢。

您是在为命令行创建此命令吗?使用console.log与用户通信似乎很奇怪。无论哪种方式,我都建议学习使用事件,似乎它在这里非常有用。不,一点也不,这是用于web的,dogiCreate函数将使用用户的信息填充dom,并使用事件处理程序作为其答案。这是我无法解决的下一步-如何使用工厂自动生成新问题。在这种情况下,当用户回答问题时,为什么不在事件处理程序中生成新问题?您是否为命令行创建此问题?使用console.log与用户通信似乎很奇怪。无论哪种方式,我都建议学习使用事件,似乎它在这里非常有用。不,一点也不,这是用于web的,dogiCreate函数将使用用户的信息填充dom,并使用事件处理程序作为其答案。这是我无法解决的下一步-如何使用工厂自动生成新问题。在这种情况下,当用户回答问题时,为什么不在事件处理程序中生成新问题?谢谢:)重新调用dog是否需要使用唯一的var才能使其成为单独的事件。我需要在每个问题之后记录状态以记录分数。事件是从某个DOM元素触发的,比如单击。如果dog在您的事件处理程序函数的范围内,您可以如上所述调用它。Thank DvS将尝试:)Thank you:)dog的重新调用是否需要具有唯一的变量才能使其成为单独的事件。我需要在每个问题之后记录状态以记录分数。事件是从某个DOM元素触发的,比如单击。如果dog在您的事件处理程序函数的范围内,您可以如上所述调用它。谢谢DvS,将尝试:)