2012-01-03 4 views
0

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

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, но мне нужно, что сценарий, чтобы иметь возможность начать в любой и я хотел использовать для этого «а». Так что, если а = 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 (гораздо выше, в реальной игре, так что игрок никогда не достигает предела.

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

+0

Используйте массив (объект JavaScript), где 'key' = номер квеста и' значение' = ваша строка или функция. – Stefan

ответ

0

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

Это пример в 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

Спасибо, я изначально не хотел использовать массив из-за ошибки, связанной с их сохранением в используемой программе. Но это не имеет значения, потому что кто-то еще решил закончить это. – gabriel101x

+0

вы должны выбрать ответ – kaz

2

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

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

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

0

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

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

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

Смежные вопросы