Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我被卡住了,试图做一个回合制的游戏,但是在结束一个回合和开始一个新的回合时遇到了麻烦_Java_Loops - Fatal编程技术网

Java 我被卡住了,试图做一个回合制的游戏,但是在结束一个回合和开始一个新的回合时遇到了麻烦

Java 我被卡住了,试图做一个回合制的游戏,但是在结束一个回合和开始一个新的回合时遇到了麻烦,java,loops,Java,Loops,我可以先结束。我试着让它在奇数回合球员去,甚至转CPU去 public static void main(String[] args) { Random random = new Random(); Scanner keyboard = new Scanner(System.in); String mage = "mage"; System.out.println("mage, warrior, assassin, ranger?"); Stri

我可以先结束。我试着让它在奇数回合球员去,甚至转CPU去

public static void main(String[] args) {

    Random random = new Random();

    Scanner keyboard = new Scanner(System.in);

    String mage = "mage";

    System.out.println("mage, warrior, assassin, ranger?");

    String input = keyboard.nextLine();

    int playerAttackDice = random.nextInt(20) + 1;
    int cpuAttackDice = random.nextInt(20) + 1;
    int playerDefenseDice = random.nextInt(5) + 1;
    int cpuDefenseDice = random.nextInt(5) + 1;

    int turn = 1;


    while(mage.equalsIgnoreCase(input)) {
        Mage player = new Mage();
        Warrior CPU = new Warrior();

        System.out.println("You have selected: mage");

        System.out.println("Your Attack Power is: "  + player.getMageAttack());
        System.out.println("Your Defense is: " + player.getMageDefense());
        System.out.println("Your Health is: " + player.getMageHealth());

        System.out.println("Your enemy is a: warrior");

        System.out.println("Enemy Attack Power is: "  + CPU.getMageAttack());
        System.out.println("Enemy Defense is: "  + CPU.getMageDefense());
        System.out.println("Enemy Health is: "  + CPU.getMageHealth());

        System.out.println();
这是转折点开始的地方。我试图设置它,使它的球员去奇数在中央处理器去。我是否以正确的方式处理这件事?任何帮助都将不胜感激

        while(player.mageHealth != 0) {
            System.out.println("Your health is: " + player.mageHealth);

            for(turn = 1; turn % 1 ==0; turn++) {
            if(turn % 1==0) {
                System.out.println("Your dice roll is:" + playerAttackDice);
                int playerDamage = playerAttackDice + player.mageAttack;
                int cpuDefense = cpuDefenseDice + CPU.mageDefense;
                System.out.println(playerDamage);
                System.out.println(cpuDefense);

                System.out.println("CPU health is: " + (CPU.mageHealth + cpuDefense - playerDamage ));
                return;
            }

            }
            turn++;
            for(turn = 2; turn % 2 ==0; turn++) {
            while(turn % 2==0) {
                System.out.println("CPU dice roll is:" + cpuAttackDice);
                System.out.println("Your dice roll is:" + playerDefenseDice);
                int cpuDamage = playerDefenseDice + player.mageAttack;
                int playerDefense = cpuAttackDice + CPU.mageHealth;
                System.out.println(cpuDamage);
                System.out.println(playerDefense); 
            }
            }



        }

        System.out.println("end loop");
        break;

}

}

如果你想让玩家和CPU一个接一个地玩他们的招式,只需把他们的动作一个接一个地放好,周围没有内部循环和复杂的条件

while (!game.isOver()) {
 player.makeMove();
 cpu.makeMove();
}
或者把你的代码放在那里

while(player.mageHealth > 0) { // game over condition
    //player move
    System.out.println("Your health is: " + player.mageHealth);

    System.out.println("Your dice roll is:" + playerAttackDice);
    int playerDamage = playerAttackDice + player.mageAttack;
    int cpuDefense = cpuDefenseDice + CPU.mageDefense;
    System.out.println(playerDamage);
    System.out.println(cpuDefense);

    System.out.println("CPU health is: " + (CPU.mageHealth + cpuDefense - playerDamage ));

    //cpu move
    System.out.println("CPU dice roll is:" + cpuAttackDice);
    System.out.println("Your dice roll is:" + playerDefenseDice);
    int cpuDamage = playerDefenseDice + player.mageAttack;
    int playerDefense = cpuAttackDice + CPU.mageHealth;
    System.out.println(cpuDamage);
    System.out.println(playerDefense);

    player.mageHealth = player.mageHealth + playerDefence - cpuDamage;
}

不会。第一个for循环根本不会运行(它将循环零次),第二个for循环只运行一次,但它内部的while循环是一个无限循环。