如何根据用户输入进行不同的操作

时间:2015-06-20 09:49:47

标签: java input

我试图制作一个非常简单的游戏(即使没有界面)。您应该键入要进行攻击的动作,重击和轻击或阻挡)。但是"敌人"仅响应" light"行动。问题是什么?

 import java.util.Scanner;
 public class Game {
    public static void main(String[] args) {
        int hp = 10, enemy_hp = 10;
        String attack = "attack";
        String block = "block";
        String heavy = "heavy";
        String light = "light";
        Scanner userInput = new Scanner(System.in);
        while (enemy_hp > 0 && hp > 0) {
            System.out.println("It is your turn, attack (heavy or light) or try to block");
            int your_block_chance1 = (int)(Math.random() * 4); //Chance to block an attack
            int enemy_block_chance1 = (int)(Math.random() * 4);
            String action = userInput.next();
            if (action.equals(attack)) { //attack
                System.out.print("You attacked your enemy and ");
                if (enemy_block_chance1 == 0) {
                    System.out.println("he blocked it");
                } else if (enemy_block_chance1 != 0) {
                    enemy_hp = enemy_hp - 3;
                    System.out.println("managed to hit, now his hp is " + enemy_hp);
                }
            } else if (action.equals(light)) { //light attack
                System.out.print("You want to do a light attack");
                if (enemy_block_chance1 == 0) {
                    System.out.println(" but he blocked it");
                } else if (enemy_block_chance1 != 0) {
                    enemy_hp = enemy_hp - 1;
                    System.out.println(" and you managed to hit him, now his hp is " + enemy_hp);
                } else if (action.equals(block)) { //block
                    System.out.println("You dicided to block and rest");
                    your_block_chance1 = (int)(Math.random() * 1);
                    hp++;
                } else if (action.equals(heavy)) { //heavy attack
                    System.out.print("You went for a heavy attack");
                    int heavy_attack_chance = (int)(Math.random() * 2);
                    if (heavy_attack_chance == 1) {
                        System.out.println(" but failed");
                    } else if (heavy_attack_chance != 1) {
                        if (enemy_block_chance1 == 0) {
                            System.out.println(" but he blocked it");
                        } else if (enemy_block_chance1 != 0) {
                            enemy_hp = enemy_hp - 6;
                            System.out.println(" and you managed to hit you really hard, now his hp is " + enemy_hp);
                        }
                    }
                }
                System.out.print("It is your enemy turn, he decided to "); //enemy turn 
                int enemy_action2 = (int)(Math.random() * 4);
                if (enemy_action2 == 1) {
                    System.out.print("attack you,"); //attack
                    if (your_block_chance1 == 0) {
                        System.out.println(" but you blocked it");
                    } else if (your_block_chance1 != 0) {
                        hp = hp - 3;
                        System.out.println(" and you didn't block it, now your hp is " + hp);

                    }
                } else if (enemy_action2 == 0) { //heavy attack
                    System.out.print("do a heavy attack");
                    int heavy_attack_chance = (int)(Math.random() * 2);
                    if (heavy_attack_chance == 1) {
                        System.out.println(" but failed");
                    } else if (heavy_attack_chance != 1) {
                        if (your_block_chance1 == 0) {
                            System.out.println(" but you blocked it");
                        } else if (your_block_chance1 != 0) {
                            hp = hp - 6;
                            System.out.println(" and he managed to hit you really hard, now your hp is " + hp);
                        }
                    }
                } else if (enemy_action2 == 3) { //light attack
                    System.out.print("do a light attack");
                    if (your_block_chance1 == 0) {
                        System.out.println(" but you blocked it");
                    } else if (your_block_chance1 != 0) {
                        hp = hp - 1;
                        System.out.println(" and he managed to hit you, now your hp is " + hp);
                    }
                } else if (enemy_action2 == 2) { //block
                    System.out.println("block and rest");
                    enemy_hp++;
                }
            }
            if (hp <= 0) {
                System.out.println("You failed");
            } else if (enemy_hp <= 0) {
                System.out.println("You won!");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在这里您可以获得用户输入

while (enemy_hp > 0 && hp > 0) {
        System.out.println("It is your turn, attack (heavy or light) or try to block");
        int your_block_chance1 = (int) (Math.random() * 4); //Chance to block an attack
        int enemy_block_chance1 = (int) (Math.random() * 4);
        String action = userInput.next(); 

当您键入&#34; heavy&#34;在控制台

if (action.equals(attack)) {

&#34;重&#34;不等于&#34;攻击&#34;所以它...... ..

else if (action.equals(light)) {

&#34;重&#34;不等于&#34;光&#34;所以再一次条件不是真的

你一路走到:

        if (hp <= 0) {
            System.out.println("You failed");
        } else if (enemy_hp <= 0) {
            System.out.println("You won!");
        }

因此它返回到while循环,您可以尝试再次输入。

你的条件为&#34;重&#34;在...&#34; light&#34;条件:

else if (action.equals(light)) {
...
...
   } else if (action.equals(heavy)) {

我认为您的问题是代码无法读取。尝试使用像intelij,eclipse这样的IDE来正确格式化你的代码。 我不知道你是否熟悉面向对象编程,但你应该使用更多的对象,如Player,Enemy。您还可以为特定的攻击类型或块类型添加一些对象,有很多选项:)

答案 1 :(得分:1)

错位的括号: 我已从末尾删除了结束括号},并在} else if (action.equals(heavy)) {

之前添加了一个

检查一下:

import java.util.Scanner;
public class Game1 {
public static void main(String[] args) {
    int hp = 10, enemy_hp = 10;
    String attack = "attack";
    String block = "block";
    String heavy = "heavy";
    String light = "light";
    Scanner userInput = new Scanner(System.in);
    while (enemy_hp > 0 && hp > 0) {
        System.out.println("It is your turn, attack (heavy or light) or try to block");
        int your_block_chance1 = (int)(Math.random() * 4); //Chance to block an attack
        int enemy_block_chance1 = (int)(Math.random() * 4);
        String action = userInput.next();
        if (action.equals(attack)) { //attack
            System.out.print("You attacked your enemy and ");
            if (enemy_block_chance1 == 0) {
                System.out.println("he blocked it");
            } else if (enemy_block_chance1 != 0) {
                enemy_hp = enemy_hp - 3;
                System.out.println("managed to hit, now his hp is " + enemy_hp);
            }
        } else if (action.equals(light)) { //light attack
            System.out.print("You want to do a light attack");
            if (enemy_block_chance1 == 0) {
                System.out.println(" but he blocked it");
            } else if (enemy_block_chance1 != 0) {
                enemy_hp = enemy_hp - 1;
                System.out.println(" and you managed to hit him, now his hp is " + enemy_hp);
            }
        } else if (action.equals(block)) { //block
                System.out.println("You dicided to block and rest");
                your_block_chance1 = (int)(Math.random() * 1);
                hp++;
        } else if (action.equals(heavy)) { //heavy attack
                System.out.print("You went for a heavy attack");
                int heavy_attack_chance = (int)(Math.random() * 2);
                if (heavy_attack_chance == 1) {
                    System.out.println(" but failed");
                } else if (heavy_attack_chance != 1) {
                    if (enemy_block_chance1 == 0) {
                        System.out.println(" but he blocked it");
                    } else if (enemy_block_chance1 != 0) {
                        enemy_hp = enemy_hp - 6;
                        System.out.println(" and you managed to hit you really hard, now his hp is " + enemy_hp);
                    }
                }
        }
            System.out.print("It is your enemy turn, he decided to "); //enemy turn 
            int enemy_action2 = (int)(Math.random() * 4);
            if (enemy_action2 == 1) {
                System.out.print("attack you,"); //attack
                if (your_block_chance1 == 0) {
                    System.out.println(" but you blocked it");
                } else if (your_block_chance1 != 0) {
                    hp = hp - 3;
                    System.out.println(" and you didn't block it, now your hp is " + hp);

                }
            } else if (enemy_action2 == 0) { //heavy attack
                System.out.print("do a heavy attack");
                int heavy_attack_chance = (int)(Math.random() * 2);
                if (heavy_attack_chance == 1) {
                    System.out.println(" but failed");
                } else if (heavy_attack_chance != 1) {
                    if (your_block_chance1 == 0) {
                        System.out.println(" but you blocked it");
                    } else if (your_block_chance1 != 0) {
                        hp = hp - 6;
                        System.out.println(" and he managed to hit you really hard, now your hp is " + hp);
                    }
                }
            } else if (enemy_action2 == 3) { //light attack
                System.out.print("do a light attack");
                if (your_block_chance1 == 0) {
                    System.out.println(" but you blocked it");
                } else if (your_block_chance1 != 0) {
                    hp = hp - 1;
                    System.out.println(" and he managed to hit you, now your hp is " + hp);
                }
            } else if (enemy_action2 == 2) { //block
                System.out.println("block and rest");
                enemy_hp++;
            }
        }
        if (hp <= 0) {
            System.out.println("You failed");
        } else if (enemy_hp <= 0) {
            System.out.println("You won!");
        }
    }

}