2012-01-03 90 views
0

的名字嘿,我是比較新的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'。因此如果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(在實際遊戲中要高得多,因此球員從來沒有達到極限。

所以,如果有人知道如何有針對的起點腳本添加一個新的任務,動態和或賭注爲了填補這個空白,請將名單上移,讓我知道。

+0

使用一個數組(JavaScript對象),其中'key' =任務號和'value' =您的字符串或函數。 – Stefan 2012-01-03 09:58:55

回答

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 2012-01-04 01:16:09

+0

你應該選擇答案 – kaz 2012-01-04 10:28:12

0

這聽起來像你應該把所有的任務放到一個數組中,並使用數組的索引在任務列表中向前或向後移動。

沒有理由像你一樣使用多個編號的變量。數組將導致更高效的代碼。

您可以使用array.shift()array.unshift()在陣列中向上/向下移動項目,也可以跟蹤陣列的索引作爲當前設置點,然後遞增或遞減索引以移動。