java - 无法让我的 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!");
}
}
}
}
解决方案
这条线
Combat fight1 = new Combat("Homeless Man", "Rusty Fork", 100, 110, 30);
初始化以下参数:enemyName
、enemyItem
、enemyHP
、enemyMaxDam
和enemyMinDam
。
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!
包含无效值,因为从未初始化以下变量:damageTaken
、damageDelt
(多次使用)和playerWeapon
。
要修复damageTaken
和damageDelt
,您只需要调用您创建的函数来生成随机伤害值。要解决此问题playerWeapon
,您需要弄清楚需要如何以及在何处为其提供 String 值。
推荐阅读
- vb6 - 未找到许可证信息... MSDN 集合不存在?
- node.js - MongoDB用相应的数据更新对象数组中的多个项目
- rust - 是否有一种安全的方法可以将枚举变体映射到另一个枚举变体,只需在 Rust 中对其进行可变引用?
- python-3.x - 监控 chrome 标签 - python selenium
- sql - 在列数未知的列中转置行
- r - R函数删除文本直到列表中的某个关键字
- c++ - 数组的 Lambda 捕获(按值)只是复制指针?
- javascript - 当需要 false 时,Regex 测试返回 true
- c++ - C++ 运算符优先级和关联性问题
- arrays - 在 ReactElements 中处理数据对象