我正在练习循环,我想我会用一个简单的战斗来让它变得有趣。我不知道为什么,但doBattle循环只调用battleMenu而没有提醒任何其他东西。我错过了什么/误解了什么?欢迎任何有关改进代码的建议。
doBattle(player, goblin_01);
function battleMenu(){
selection = prompt("\n Battle menu\n1: Attack\n2: Defend\n3: Abilities\n4: Status\n5: Enemy Status\n Enter a choice: ");
// Checks for valid input
while (selection > 5 || selection < 1){
selection = prompt("Invalid choice.\n Enter a choice(1-5)");
}
}
function doBattle(x,y){
do { battleMenu();
switch(selection){
case 1: // do stuff
break;
case 2: // do other stuff
break;
case 3: // alternative stuff
break;
case 4: // not stuff but things
break;
case 5: // something irrelevant to the topic
break;
} // End of Selection Switch
} while // condition that became false
}
编辑:正如在OP中首先评论的那样,问题是我传递了一个String但是测试了整数。我忘了转换类型,偶数输入字符串。这些案件使代码复杂化,我假设这就是为什么它处于暂停状态。但希望现在它有用。
答案 0 :(得分:1)
您的代码存在dataType
selection
变量问题。变量selection
被视为String
但在switch
语句中您使用Integer
dataType
进行比较。因此,您可以使用dataType
转换方法获取Integer
值...
var m=parseInt(selection);
switch(m){
............
............
这是工作Fiddle
答案 1 :(得分:-1)
您的选择变量似乎未定义或传递给doBattle。尝试在代码顶部声明变量,声明播放器和goblin_01对象