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! +++");
}
}
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! +++");
}
}