java - 如何存储随机变量并为游戏打印?(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!");
}
}
}
解决方案
在你的displayCombat
方法中,你永远不会从他的生命值中减去对敌人造成的伤害。在此方法中,您不应初始化新变量 ( int enemyHealth = (enemyHP - getDamageDelt());
)。
相反,你应该有类似的东西enemyHP -= getDamageDelt();
,以便从敌人的健康中减去伤害。
推荐阅读
- javascript - 如何从 SAPUI5 V1.38.39 中的本地 JSON 文件在控制器中创建 JSON 模型?
- javascript - 尽管在我的控制器中使用了等待,为什么我会收到 Promise Pending?
- android - 为什么我在 RecyclerView 中的构造函数被调用晚了?
- python - 更改用于 Anaconda / Jupyter Notebook 的 python
- javascript - 循环遍历对象并打印子节点
- javascript - 如何减慢这个 for 循环并每 400 毫秒设置一次状态?
- android - 如何更新我的列表视图以列出发现的蓝牙设备?
- angular - “数字”类型的参数不能分配给“字符串”类型的参数。将旧项目导入新项目时
- rounding - 地板/天花板代码仍然无法按要求工作
- angular - Angular无法解码deflate,gzip