循环只执行第一个语句

Loop only executing first statement

本文关键字:语句 第一个 执行 循环      更新时间:2023-09-26

我正在练习循环,我想我会让它有趣与一个简单的战斗。我不知道为什么,但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中第一次评论的那样,问题是我正在传递一个字符串,但测试整数。我忘记转换类型了,偶数是作为字符串输入的。案子让代码很复杂我想这就是它被搁置的原因。希望现在有用了

您的代码的问题是selection变量的dataType。变量selection被视为String,但在switch语句中,您使用Integer dataType进行比较。所以你可以使用dataType转换方法来获得Integer值…

    var m=parseInt(selection);
      switch(m){
      ............
      ............

这里是工作的小提琴

似乎您的选择变量没有定义或传递给doBattle。尝试在代码的顶部声明变量,在这里声明player和goblin_01 Objects