嘿,我对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 :(得分:2)
您应该考虑使用数组来存储任务,而是逐个分配变量。
使用shift
删除数组开头的任务,unshift
将任务附加到数组的开头。
您可以参考https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array了解数组对象的用法。
答案 1 :(得分:0)
这听起来好像你应该将所有任务放入一个数组中,并使用数组的索引在任务列表中向前或向后移动。
没有理由像你一样使用多个编号的变量。数组将带来更高效的代码。
您可以使用array.shift()
或array.unshift()
在数组中向上/向下移动项目,也可以只跟踪数组的索引作为当前设置点,并将索引增加或减少到四处走动。
答案 2 :(得分: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);
}
这是应该编程的方式。您可以将任务数量更改为参数,您无需重写代码。