這段代碼應該會在每次死亡時產生新的敵人。這包括敵人隨機生成一點健康,但我的程序只是使用與前一個敵人相同的健康狀態,因此不斷循環到「敵人已被擊敗」,我試圖讓敵人健康並生成特定的敵人Enemy.java,但我很努力地掌握正確的OOP,即使我已經使用了一些教程。Java如何在每次while循環開始時獲得一個隨機數?
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;
public class Test {
public static void main(String args[]) {
Random rand = new Random();
Scanner in = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
boolean running = true;
int hitPoints;
int choice;
String name;
Vehicle Vehicle = new Vehicle();
Player Player = new Player();
Enemy Enemy = new Enemy();
Player.name();
Vehicle.number();
Player.hitPoints();
name = Player.name;
int enemyHealth;
GAME:
while(running){
String [] enemies = {"Skeleton", "Zombie", "Warrior", "Assassin", "Reaper", "Archer"};
String enemy = enemies[rand.nextInt(enemies.length)];
enemyHealth = Player.enemyHealth;
System.out.println("\n*# " + enemy + " appeared! #*");
hitPoints = Player.hitPoints;
while(enemyHealth > 0){
enemyHealth = Player.enemyHealth;
if(enemyHealth < 1){
break;
}
if(hitPoints < 1){
System.out.println("\nYour car has been destroyed");
break;
}
hitPoints = Player.hitPoints;
System.out.println("\nYour car has " + hitPoints + " health ");
System.out.println("Enemy car has " + enemyHealth + " health ");
System.out.println("\n1. Bump enemy car");
System.out.println("2. Heal your car");
System.out.println("3. Avoid enemy car");
int userChoice = in.nextInt();
switch(userChoice){
case 1:
Player.attack();
break;
case 2:
case 3:
System.out.println("You barely avoided the enemy car");
break;
}
}
if(hitPoints < 1){
System.out.println("\nGame Over");
break;
}
if(enemyHealth < 1){
hitPoints = Player.hitPoints;
name = Player.name;
System.out.println(" \nEnd Fight Result: \n");
System.out.println(" # " + enemy + " was defeated! #");
System.out.println(" # You have " + hitPoints + " HP left. #");
System.out.println("\nWhat would you like to do " + name + " ?");
System.out.println("1. Continue Fighting");
System.out.println("2. Exit Dungeon");
choice = in.nextInt();
switch(choice){
case 1:
System.out.println("\nYou continue your adventure!");
break;
case 2:
System.out.println("You exit the dungeon, succesful from your adventures!");
break;
}
if(choice == 2){
break;
}
}
}
name = Player.name;
System.out.println("\n##########################");
System.out.println("# Thanks for playing " + name + "! #");
System.out.println("##########################");
}
}
import java.util.Scanner;
import java.util.Random;
public class Player {
Enemy Enemy = new Enemy();
Scanner in = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
Random rand = new Random();
String name;
int hitPoints;
int enemyDamageDealt = Enemy.enemyDamageDealt;
int enemyHealth = Enemy.enemyHealth;
int damageDealt;
public void name(){
System.out.println("Enter your username");
this.name = sc.nextLine();
System.out.println("You set your username to: " + name);
}
public void hitPoints(){
hitPoints = rand.nextInt(500) + 500;
}
public void attack(){
damageDealt = rand.nextInt(100);
enemyHealth -= damageDealt;
hitPoints -= enemyDamageDealt;
System.out.println("You damaged the enemy car for " + damageDealt);
System.out.println("In return you got damaged for " + enemyDamageDealt);
}
}
import java.util.Random;
import java.util.Scanner;
public class Enemy {
Scanner in = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
Random rand = new Random();
int enemyDamageDealt = rand.nextInt(100);
public String [] enemies = {"Skeleton", "Zombie", "Warrior", "Assassin", "Reaper", "Archer"};
public String enemy = enemies[rand.nextInt(enemies.length)];
int enemyHealth = rand.nextInt(500) + 250;
}
這是很多代碼。如果您希望我們花時間試着瀏覽它,則需要花時間格式化。你可能想讀這個:如何創建[mcve]。 –
歡迎來到Stack Overflow!看起來你正在尋求作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 –
那麼如果你想例如'enemyHealth'有一個隨機數,你必須給它分配一個:'enemyHealth = rand.nextInt();'或者任何你正在尋找的取值範圍。 – markspace