(Stack Overflow没有“提示符”标签,所以我使用了警报,因为我猜测它足够类似于吸引正确的回答者。)用数组元素填充提示并将它们编号为
你好, 我目前正在为大学的作业制作基于JavaScript的游戏。我通常在解决问题方面表现不错,但一直都被这个问题困扰。
为了解释,我有一个数组,它命名了玩家可以选择的可能的装甲插槽。以任何顺序,这些可以被挑选出来,并且每当选择被推送到第二个数组时,该数组处理已经被挑选的(以什么顺序)并且该项目从原始数组拼接。有一段时间循环直到全部3个被选中。
var armourSlotToPick = ["Head", "Chest", "Legs"],
armourSlotPicked = [],
armourLoop = 1,
indexArmour = 0;
function numInArray() {
indexArmour++;
return (indexArmour + ". " + armourSlotToPick[indexArmour - 1] + "\n");
}
function armour() {
while (armourLoop < 4) {
var armourPick = prompt("Pick an armour slot to generate an item for:\n" + armourSlotToPick.forEach(numInArray));
if (armourPick == 1) {
armourSlotPicked.push(armourSlotToPick[0]);
armourSlotToPick.splice(0,1);
} else if (armourPick == 2) {
armourSlotPicked.push(armourSlotToPick[1]);
armourSlotToPick.splice(1,1);
} else if (armourPick == 3) {
armourSlotPicked.push(armourSlotToPick[2]);
armourSlotToPick.splice(2,1);
} else {
alert("Invalid choice, you suck");
break;
}
armourLoop++;
}
}
我知道它可能不会做到numInArray()中的整个返回提示,但它显示了一些工作。
现在的问题:我得到了它的工作,以便数组中的每个项目都被编号(var armourSlotToPick = [“1. Head”,“2. Chest”,“3. Legs”),但尽可能如果玩家选择了2,那么下一次它会显示“1. Head(new line)3. Legs”,当玩家选择3时,会出现问题,因为他们真的打算选择2。在提示中可以对数组中的项目进行编号?
我可能在想这个,但我已经忍受了几个小时了。
我可以提前感谢您的任何见解,您可能有,
丹尼尔。
编辑:解决。
以下是最终结果,与Jonathan Brooks编辑答案略有不同。
var armourSlotToPick = [null, "Head", "Chest", "Legs"]
var armourSlotPicked = [null];
var armourLoop = 1;
function armour() {
while (armourLoop < 4) {
var message = "Pick an armour slot to generate an item for:\n";
for (var i = 0; i < armourSlotToPick.length; i++) {
if (armourSlotToPick[i] !== null) {
message += "" + i + ". " + armourSlotToPick[i] + "\n";
}
}
var armourPick = prompt(message);
if (armourPick > armourSlotToPick.length-1 || armourPick < 1) {
alert("Invalid choice, you suck");
} else {
var insert = armourSlotToPick.splice(armourPick, 1);
armourSlotPicked.push(insert);
}
armourLoop++;
}
armourSlotPicked.splice(0,1);
}
armour();
alert(armourSlotPicked.join("\n"));
我感谢所有那些为这次讨论和最终的结果作出了贡献,我希望这是一个未来的问题的人可能有类似的一个很好的例子。
谢谢你,是的,我明白如何处理这些问题,我只有1个问题, '钥匙'仍然硬编码为'价值',就像我三次这样做时一样,每次玩家选择下一个装甲槽时,2将永远是胸部,3将永远是腿部。我希望在第一次选择后动态改变,剩余2现在是关键字1,而关键字2不是,比如说,关键字2和关键字3(用于胸部和腿部)。我猜这是可能的。 –
@DanielJochem查看我的编辑 –
谢谢@JonathanBrooks,我已经结束了使用您编辑的答案,因为我确实想保留Henrik建议我不这样做的提示窗口。感谢您对我的耐心。 –