Использование строки в качестве имени переменной - PullRequest
0 голосов
/ 03 января 2012

Эй, я относительно новичок в программировании на javascript и работаю над игрой на javascript, и мне нужна помощь с этим сценарием:

a = ();          //a is the number of the quest completed e.g. 3 would be Quest3 
Quest1 = "Hello1"
Quest2 = "Hello2"
Quest3 = "Hello3"
Quest4 = "Hello4"
Quest5 = "Hello5"
Quest6 = "Hello6"
Quest7 = 0         //This is just a placeholder for the end of the list

Это сценарий для списка квестов в хронологическом порядкео том, когда они были получены.Это игрок должен завершить.Когда квест завершен, он удаляется из списка, и список перемещается вверх, чтобы заполнить пространство. То, как я это делал, было, хотя, вероятно, есть лучший способ сделать это (если кто-нибудь знает лучший способ, пустья знаю).Скажем, если Quest3 был завершен, следующий код будет выполняться, чтобы список двигался вверх, начиная с выполнения квеста:

Quest3 = Quest4;
Quest4 = Quest5;
Quest5 = Quest6;

Этот сценарий начинается с Quest3, но мне нужен этот сценарий, чтобы его можно было запуститьв любой момент, и я хотел использовать «а» для этого.Таким образом, если a = 4, тогда сценарий будет начинаться с Quest4:

Quest4 = Quest5
Quest5 = Quest6

Этот сценарий будет возвращаться в обратном направлении, если будет добавлен новый квест, так как новые добавленные квесты всегда будут идти в Quest1, тогда будет выполняться следующий скрипт:

Quest6 = Quest7  //Get rid of quest 6
Quest5 = Quest4
Quest4 = Quest3
Quest2 = Quest1
Quest1 = "The New Quest"

Таким образом, максимальное количество квестов, которое игрок мог бы получить, может быть 6 (намного больше в реальной игре, поэтому игрок никогда не достигает предела.

Так что, если кто-то знает, каку сценария есть отправная точка для добавления нового квеста, динамического и / или лучшего способа перемещения списка вверх-вниз, чтобы заполнить пробел, дайте мне знать.

Ответы [ 3 ]

2 голосов
/ 03 января 2012

вам следует рассмотреть возможность использования массива для хранения квестов вместо назначения переменных одна за другой.

используйте shift для удаления задачи в начале массива и unshift для добавления задачи в начале массива.

вы можете ссылаться https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array на использование объектов массива.

0 голосов
/ 03 января 2012

Вы должны использовать массивы независимо от того, какой язык вы используете в этом случае:

Это пример в javascript:

var maxQuests = 6;
var quests = new Array();
var activeQuests = 0;

function addQuest(questName) {
    if (activeQuests >= maxQuests) return;
    activeQuests++;
    quests.push(questName);
}

function completeQuest(questName) {
    if (!quests.contains(questName)) return;
    activeQuests--;
    quests.splice(quests.indexOf(questName), 1);
}

http://jsfiddle.net/xguwk/

Это путьэто должно быть запрограммировано.Вы можете изменить количество квестов в качестве параметра, вам не нужно переписывать свой код.

0 голосов
/ 03 января 2012

Это звучит так, как будто вы должны поместить все квесты в массив и использовать индекс массива для перемещения вперед или назад в списке квестов.

Нет причин использовать несколько пронумерованных переменных, как у вас. Массив приведет к гораздо более эффективному коду.

Вы можете перемещать элементы вверх / вниз в массиве с помощью array.shift() или array.unshift(), или вы можете просто отслеживать индекс массива в качестве текущей заданной точки и увеличивать или уменьшать индекс для перемещения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...