Wie kreiere ich ein Enemy?

Bitte aktiviere JavaScript!
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! +++");
}
}
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
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());
    }
}
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben