0
我試圖創建一個文本冒險遊戲的戰鬥系統,隨機生成一個隨機健康池隨機敵人,但每個產生的敵人似乎沒有自己的健康池,而不是「主「敵人健康變量在攻擊時持續遞增。所以輸出結果顯示新的健康負面健康的敵人,而不是一個新的健康池。 我迄今爲止代碼:文本冒險遊戲戰鬥系統的方法
public class Combat{
//enemy variables
private int enemyHealth = (int) (Math.random()*75);
private int maxEnemyDamage = 25;
private String enemyName;
//player variables
private int playerHealth = 100;
private int playerDamage = 50;
//health potion variables
private int numHealthPotions = 3;
private int healAmount = 30;
private int dropChance = 50; //percentage
public String getEnemyName() {
String[] enemy = {"Zombie", "Witch", "Hell Dog", "Skeleton"};
int i = (int) (Math.random() * 4);
this.enemyName = enemy[i];
return this.enemyName;
}
public int getEnemyHealth(){
return enemyHealth;
}
public void enemyAppears(){
String enemy = getEnemyName();
System.out.println("A " + enemy + " has appeared with " + enemyHealth + " health.");
}
public void attack() {
int damageTaken =(int) (Math.random() * maxEnemyDamage);
int damageDealt =(int) (Math.random() * playerDamage);
enemyHealth -= damageDealt - getEnemyHealth();
playerHealth -= damageTaken;
System.out.println("You strike for " + damageDealt);
System.out.println("You have been hit for " + damageTaken);
System.out.println("You have " + playerHealth + " hp left.\n The enemy has " + enemyHealth + " hp left.");
if (playerHealth < 0){
System.out.println("You died.");
System.exit(15);
}
調用這些方法的主要方法:
Combat combat = new Combat();
Scanner input = new Scanner(System.in);
System.out.println("Welcome to the dungeon");
boolean running = true;
GAME:
while(running){
combat.enemyAppears();
System.out.println("Choose:\n1. To Attack \n2. To Heal \n3. To Run");
String choice = input.next();
if(choice.equals("1")) {
combat.attack();
} else if (choice.equals("2")){
combat.heal();
} else {
combat.run();
break;
}
}
}
我想產卵敵人的對象(我只是隨機產生的名稱作爲是)因爲我覺得這會解決這個問題,但我無法完全弄清楚我需要用我的構造函數。我可以猜測爲什麼我的代碼不工作,但我無法修復它。有一個簡單的構造函數或setter可以解決這個問題嗎?
'enemyHealth'永遠不會重置 – depperm