Это может быть ваша проблема:
function nextLoc(dir) {
var newLoc = nav[loclocal][dir];
if (newLoc >= 0) {
loclocal = newLoc;
} else {
displayMessage("You cannot go that way.");
}
disable_btns();
}
вы проверить, чтобы убедиться newLoc> = 0, но вы не убедитесь, что это < locations.length. Измените его следующим образом:
function nextLoc(dir) {
var newLoc = nav[loclocal][dir];
//changed following line:
if (newLoc >= 0 && newLoc < locations.length) {
loclocal = newLoc;
} else {
displayMessage("You cannot go that way.");
}
disable_btns();
}
редактирования: проблема (с этой ошибкой) является то, что вы назначаете элементы locations
массива в переменные, которые еще не были определены.
var locations = new Array();
locations[0] = loclocal_0;
присвоит undefined
в местах [0], потому что loclocal_0 назначается позже в коде.
Как быстро исправить, вы можете переместить
var locations = new Array();
...
locations[10] = loclocal_10;
в ниже:
var loclocal_10 = new rooms();
...
loclocal_10.hasItem = false
в коде. Вероятно, это выявит другие ошибки, только пару, которую я заметил с первого взгляда:
в function rooms()
: this.toString=this.discription;
содержит опечатку.
Я рекомендую просмотреть код и добавить точки с запятой в конце каждой строки, где вы в настоящее время полагаетесь на автоматическую вставку с запятой, и отступы последовательно.
Сделайте глубокий вдох. Это ваш первый год, так что вы, вероятно, не собираетесь писать хороший код на данный момент, просто сосредоточьтесь на том, чтобы преодолевать ошибки по одному за раз, и имейте в виду, что для будущих заданий требуется некоторое время, чтобы изучить лучшие практики язык, который вы используете в начале, избавит вас от жестких ошибок в будущем.
Stackoverflow не подходит для отладки всего проекта такого размера, но я рекомендую, если вам нужна персональная справка (и у вас нет доступа к ресурсам на кампусе), вы смотрите на сайты, такие как instaedu, odesk , или фрилансером, чтобы заставить кого-то потратить время, в течение которого ваша программа должна была разобраться во всех кинксах. Один раз на один с кем-то, кто проведет вас через то, что вы должны делать (например, вы можете получить с помощью instaedu), было бы лучше всего для обучения, тогда как фрилансер и odesk могут иметь ограниченную полезность, если ваша цель - научиться писать программы сами.
Сделайте 'console.log'' location' и 'loclocal'. Если это не сразу поможет, используйте 'debugger;'. – Bergi
Im студент первого курса comp sci. мы еще не узнали об этом. вы можете объяснить –
[Нет] (http://stackoverflow.com/q/988363/1048572) – Bergi