Wie kreiere ich ein Enemy?

AlessaZZ

Neues Mitglied
Ich will verschiedene Enemys in der Enemy Klasse anlegen. Später will ich in Fight über z.B. enemy.getCharacterName() auf den Namen vom Enemy zugreifen aber dann steht dort in der Ausgabe null, also hat es ja den Enemy in der Enemy Klasse doch nicht angelegt. Wie kann ich eine Ausgabe wie z.B. Ghost kreieren?
Ein Code Aussschnitt:

public class EnemyFactory {

public static IEnemy getInstance(String type ){
if(type.equals(IEnemy.GHOST)){
return new Ghost();
}else if(type.equals(IEnemy.KNIGHT)){
return new Knight();
}else if(type.equals(IEnemy.SKELETON)){
return new Skeleton();
}else if(type.equals(IEnemy.WIZARD)){
return new Wizard();
}else{
return null;
}
}

public class Ghost extends Enemy implements IEnemy {
private int givenEP;

public Ghost(){
setCharacterName("Ghost");
setLevel(3);
setMaxHealth(40 + getLevel() * 10);
setCurrentHealth(getMaxHealth());
setMaxStamina(40 + getLevel() * 10);
setCurrentStamina(getMaxStamina());
setMeleeAttack(5 + getLevel() * 1);
setRangedAttack(2 + getLevel() * 1);
setMeleeDefence(2 + getLevel() * 1);
setRangedDefence(6 + getLevel() * 2);
setMeleeWeaponName("force of the dead");
setMeleeWeaponDamage(5);
setRangedWeaponName("cold aura");
setRangedWeaponDamage(2);
givenEP = 4 * getLevel();
}
}

public interface IEnemy {
String WIZARD = "Wizard";
String SKELETON = "Skeleton";
String GHOST = "Ghost";
String KNIGHT = "Knight";
}

public class Enemy extends Character{
public void SpawnEnemy(Player player, int enemyID, String optionalCharacterName) {
switch (enemyID) {
case 1:
EnemyFactory.getInstance(IEnemy.SKELETON);
break;
case 2:
EnemyFactory.getInstance(IEnemy.WIZARD);
break;
case 3:
EnemyFactory.getInstance(IEnemy.GHOST);
break;
case 4:
IEnemy knight = EnemyFactory.getInstance(IEnemy.KNIGHT);
break;
}
}
}

public class Fight {
public void FightingSystem () {

running = false;
enemy.SpawnEnemy(player, enemyID, optionalCharacterName);
System.out.println("\t+++ A " + enemy.getCharacterName() + " Level " + enemy.getLevel() + " appears! +++");
}
}
 

mihe7

Top Contributor
Ich will verschiedene Enemys in der Enemy Klasse anlegen
Das willst Du nicht.

Ich sehe auch den Grund gerade nicht, warum Du 2 Interfaces und 6 Klassen brauchst.

Java:
public class Enemy {
    final String name;
    public Enemy(String name) { this.name = name; }

    public String getCharacterName() { return name; }
}

...

public static void main(String[] args) {
    Enemy[] enemies = { new Enemy("Ghost"), new Enemy("Wizard") };
    for (Enemy enemy : enemies) {
        System.out.println("A " + enemy.getCharacterName());
    }
}
 

Neue Themen


Oben