首页 > 解决方案 > 如何存储随机变量并为游戏打印?(java)

问题描述

我正在尝试使用以下命令运行构造函数:

Main fight1 = new Main("Homeless Man", "Rusty Fork", 100, 110, 30);

我希望它造成随机数量的伤害(在指定范围内),将该值保存到下一阶段的战斗,然后分别让玩家的生命值下降和存储。我也希望它重复,直到敌人没有孤独者有健康。如果您想自己尝试,我可以用程序的其余部分更新下面的代码。当前输出为:

Will you:
 -Attack (1)
 -Consume Item (2) 
 -Run (3)
1
Homeless Man hits you with a Rusty Fork, Dealing 54 damage!
You now have 903 HP left!
You hit Homeless Man With an attack using your Fists dealing 42 damage!
Homeless Man now has 60 HP left!

实际程序:

private static int playerMaxDam = 75;
private static int playerMinDam = 30;
private static int damageDelt;
private static int playerHP = 1000;
private static String currentWeapon = "Fists";

//default enemy variables
private static String enemyName;
private static String enemyItem;
private static int enemyHP;
private static int enemyMaxDam;
private static int enemyMinDam;
private static int damageTaken;

//enemy health

public int getDamageTaken() {
    
    Random rand = new Random();
    damageTaken = rand.nextInt(enemyMaxDam - enemyMinDam + 1) + enemyMinDam;
    return damageTaken;
}

public int getDamageDelt(){
    
    
    Random rand = new Random();
    damageDelt = rand.nextInt(playerMaxDam = playerMinDam + 1) + playerMinDam;
    return damageDelt;
}

public Main(String _enemyName, String _enemyItem, int _enemyHP, int _enemyMaxDam, int _enemyMinDam) {
    enemyName = _enemyName;
    enemyItem = _enemyItem; 
    enemyHP = _enemyHP;
    enemyMaxDam = _enemyMaxDam;
    enemyMinDam = _enemyMinDam;     
}

public String getPlayerWeapon() {
    
    
    String playerWeapon = null;
    String fists = "1";
    String bloody_Spoon = "0";
    
    if(fists.equals("1")) {
        playerMaxDam = 75;
        playerMinDam = 30;
        playerWeapon = "Fists";
    }else {
        if(bloody_Spoon.equals("1")) {
            playerMaxDam = 100;
            playerMinDam = 75;
            playerWeapon = "Bloody Spoon";
        }
    }
    
    return playerWeapon;
}

public void displayCombat() {
    //enemy
    int enemyHealth = (enemyHP - getDamageDelt());
    
    //player
    int playerHealth = (playerHP - getDamageTaken());
    
    //player armor
    int clothes = 1;
    int tux = 0;
    
    //player weapon
    String playerWeapon = currentWeapon;
    int fists = 1;
    int bloody_Spoon = 0;
    
    Scanner in = new Scanner(System.in);
    System.out.println("Will you:\n -Attack (1)\n -Consume Item (2) \n -Run (3)");
    String userInput = in.nextLine();
    if(userInput.equals("1")) {
        System.out.println(enemyName + " hits you with a " + enemyItem + ", Dealing " + getDamageDelt() + " damage!");
        System.out.println("You now have " + playerHealth + " HP left!");
        System.out.println("You hit " + enemyName + " With an attack using your " + playerWeapon + " dealing " + getDamageDelt() + " damage!");
        System.out.println(enemyName + " now has " + (enemyHP - getDamageDelt()) + " HP left!");
        
    }else {
        if(userInput.equals("3")) {
            System.out.println("You managed to escape the fight with " + playerHP + " left!");
        }
    }
}

标签: javaif-statementrandomprintingconstructor

解决方案


在你的displayCombat方法中,你永远不会从他的生命值中减去对敌人造成的伤害。在此方法中,您不应初始化新变量 ( int enemyHealth = (enemyHP - getDamageDelt());)。
相反,你应该有类似的东西enemyHP -= getDamageDelt();,以便从敌人的健康中减去伤害。


推荐阅读