(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建議我不這樣做的提示窗口。感謝您對我的耐心。 –