// Teach your pet to answer questions!
// Luckily, all the answers are "2"
function sayTwo(event) {
// Use pet.say() to answer "2"
pet.say("2");
}
// Use pet.on() to handle "hear" events with sayTwo
pet.on("hear", sayTwo);
// Now relax and watch the show.
hero.say("One plus one is...?");
hero.say("x^3 - 6x^2 + 12x - 8 = 0. What is x...?");
hero.say("How many moons does Mars have...?");
Почему работает данный код?
Питомец всегда отвечает “2” на каждую мою фразу. Так устроен JavaScript, или это особенность игры такая?! В смысле, вот мой взгляд на вещи:
pet.on("hear", sayTwo);
Этот код выполниться не должен. По всей видимости оно ожидает какого-то события, но перед этой строчкой нет события, поэтому игнор.
hero.say("One plus one is...?");
hero.say("x^3 - 6x^2 + 12x - 8 = 0. What is x...?");
hero.say("How many moons does Mars have...?");
Тут герой должен просто произнести три фразы подряд. Вместо этого, после каждой фразы, программа отсылает нас к pet.on - это расценивается как событие, и питомец произносит фразу. Где именно та часть кода, которая перебрасывает очередность выполнения процедур к строчки pet.on, после каждой команды hero.say?!
hero.say("One plus one is...?");
goto pet.on("hear", sayTwo);
goto hero.say("x^3 - 6x^2 + 12x - 8 = 0. What is x...?");
hero.say("x^3 - 6x^2 + 12x - 8 = 0. What is x...?");
goto pet.on("hear", sayTwo);
goto hero.say("How many moons does Mars have...?");
hero.say("How many moons does Mars have...?");
goto pet.on("hear", sayTwo);
Разве не должно быть что-то типа такого?) Этот код стоит расценивать скорее как псевдокод, если что)
Mod edit: Please don’t swear