首页 > 解决方案 > 无法让我的 java 类显示正确的值(游戏)(让所有随机损坏工作,以及健康)

问题描述

我是Java新手,正在尝试制作游戏。这是我迄今为止在“战斗课”中的内容。现在,如果这显示为:

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

我会得到输出:

    Homeless Man hits you with a Rusty Fork, Dealing 81 damage!
You now have 0 HP left!
You hit Homeless Man With an attack using your null dealing 0 damage!
Homeless Man now has 100 HP left! 

有什么办法可以解决这个问题,让它显示正确的值(随机伤害、健康值、伤害值等)

我知道这是很多代码(和工作)要查看,因此非常感谢所有帮助!

“战斗”类的代码如下:

package Walking;

import java.util.Random;
import java.util.Scanner;

public class Combat {
    
    //enemy
    String enemyName;
    String enemyItem;
    int enemyHP;
    int enemyMaxDam;
    int enemyMinDam;
    
    public int damageDelt;
    
    //player
    public int playerHP;
    public int playerMaxDam;
    public int playerMinDam;
    
    public int damageTaken;
    
    //player armor
    int clothes = 1;
    int tux = 0;
    
    //player weapon
    public String playerWeapon;
    int fists = 1;
    int bloody_Spoon = 0;
    
    
    public Combat() { 
        
    }
    
    public Combat(String _enemyName, String _enemyItem, int _enemyHP, int _enemyMaxDam, int _enemyMinDam) {
        enemyName = _enemyName;
        enemyItem = _enemyItem; 
        enemyHP = _enemyHP;
        enemyMaxDam = _enemyMaxDam;
        enemyMinDam = _enemyMinDam;     
    }
    
    public String getPlayerWeapon() {
        if(fists == 1) {
            playerMaxDam = 75;
            playerMinDam = 30;
            String playerWeapon = "Fists";
        }else {
            if(bloody_Spoon == 1) {
                playerMaxDam = 100;
                playerMinDam = 75;
                String playerWeapon = "Bloody Spoon";
            }
        }
        
        return playerWeapon;
    }
    
    public int getPlayerArmor() {
        if(clothes == 1) {
            playerHP = 1000;
        }else {
            if(tux == 1) {
                playerHP = 1100;
            }
        }
        
        return playerHP;
    }
    
    public int getDamageDelt() {
        Random rand = new Random();
        damageDelt = rand.nextInt(playerMaxDam = playerMinDam + 1) + playerMinDam;
        return damageDelt;
    }
    
    public int getDamageTaken() {
        Random rand = new Random();
        damageTaken = rand.nextInt(enemyMaxDam - enemyMinDam + 1) + enemyMinDam;
        return damageTaken;
    }
    
    public void displayCombat() {
        
        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 " + getDamageTaken() + " damage!");
            System.out.println("You now have " + (playerHP - getDamageDelt()) + " 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!");
            }
        }
        
    }
}

标签: javaeclipseclassif-statementrandom

解决方案


这条线

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

初始化以下参数:enemyNameenemyItemenemyHPenemyMaxDamenemyMinDam

Homeless Man hits you with a Rusty Fork, Dealing 0 damage!
You now have 0 HP left!
You hit Homeless Man With an attack using your null dealing 0 damage!
Homeless Man now has 100 HP left! 

包含无效值,因为从未初始化以下变量:damageTakendamageDelt(多次使用)和playerWeapon

要修复damageTakendamageDelt,您只需要调用您创建的函数来生成随机伤害值。要解决此问题playerWeapon,您需要弄清楚需要如何以及在何处为其提供 String 值。


推荐阅读