Für mein Projekt muss ich eine abstrakte Klasse Charakter erstellen und dann eine Klasse Player erstellen, die Zeichen erweitert. Weil Klasse, Charakter, abstrakt ist, kann ich sie nicht zum Hauptanrufer rufen und stattdessen muss ich den Klassenspieler zum Hauptanrufer rufen. Mein Versuch, die Klasse aufzurufen, ist im Switch-Fall in AdventureGameV3, der Hauptfunktion. Irgendwelche Ideen, wie man es nennt. Ich habe auch die Waffenklasse angehängt, aber es sollte für meine Frage nicht unbedingt notwendig sein.Aufruf von der erweiterten Klasse
import java.util.*;
import java.util.Random;
public abstract class Character {
final int ROGUE_INIT_HP = 55;
final int ROGUE_INIT_STRENGTH = 8;
final int PALADIN_INIT_HP = 35;
final int PALADIN_INIT_STRENGTH = 14;
final int CHAN_INIT_HP = 45;
final int CHAN_INIT_STRENGTH = 10;
private String name;
private int hitPoints;
private int strength;
private int weapon;
public enum Type{ROGUE, PALADIN, JACKIE_CHAN, GOBLIN, SKELETON, WIZARD}
Type cType;
//holds data for each character
public Character(Type cType) {
this.cType = cType;
switch(cType){
case ROGUE:
this.name="ROGUE";
this.hitPoints=ROGUE_INIT_HP;
this.strength=ROGUE_INIT_STRENGTH;
Weapon weapon1 = new Weapon(name,Weapon.SHORT_SWORD_MIN,Weapon.SHORT_SWORD_MAX);
this.weapon = weapon1.getDamage();
break;
case PALADIN:
this.name="PALADIN";
this.hitPoints=PALADIN_INIT_HP;
this.strength=PALADIN_INIT_STRENGTH;
Weapon weapon2 = new Weapon(name,Weapon.LONG_SWORD_MIN,Weapon.LONG_SWORD_MAX);
this.weapon = weapon2.getDamage();
break;
case JACKIE_CHAN:
this.name="JACKIE CHAN";
this.hitPoints=CHAN_INIT_HP;
this.strength=CHAN_INIT_STRENGTH;
Weapon weapon3 = new Weapon(name,Weapon.JUMP_KICK_MIN,Weapon.JUMP_KICK_MAX);
this.weapon = weapon3.getDamage();
break;
}
}
public String getName()
{
return name;
}
public int getHitPoints()
{
return hitPoints;
}
public int getStrength()
{
return strength;
}
public void setStrength(int strength)
{
this.strength=strength;
}
public void setWeapon(int weapon)
{
this.weapon=weapon;
}
public void attack()
{
}
public void increaseHitPoints(int pointIncrease)
{
hitPoints+=pointIncrease;
}
public void decreaseHitPoints(int pointDecrease)
{
hitPoints-=pointDecrease;
}
public boolean isDefeated()
{
if(hitPoints>0)
return true;
else
return false;
}
}
public class Player extends Character{
private int coins;
private String[] Potion;
public Player(Type playerType){
super(playerType);
coins=0;
String[] inventory = new String[5];
}
public void increaseStrength(int strengthIncrease){
super.setStrength(super.getStrength() + strengthIncrease);
}
public int getCoins(){
return coins;
}
public int increaseCoins(int coins){
this.coins+=coins;
}
public int decreaseCoins(int coins){
this.coins-=coins;
}
}
public class AdventureGameV3
{
public static void main(String[] args)
{
final int ROGUE_INIT_HP = 55;
final int ROGUE_INIT_STRENGTH = 8;
final int PALADIN_INIT_HP = 35;
final int PALADIN_INIT_STRENGTH = 14;
final int CHAN_INIT_HP = 45;
final int CHAN_INIT_STRENGTH = 10;
final int MINION_INIT_HP = 25;
final int GOBLIN_INIT_STRENGTH = 4;
final int SKELETON_INIT_STRENGTH = 3;
int characterChoice = 0;
Scanner keyboard = new Scanner(System.in);
System.out.println("\nAdventure Game - Start!\n");
System.out.println("Here are the characters:");
System.out.println("1. Rogue\n2. Paladin\n3. Jackie Chan\n");
System.out.print("Which character do you choose?: ");
characterChoice = keyboard.nextInt();
switch(characterChoice){
case 1:
Character player = Type(ROGUE);
break;
}
System.out.printf("\nYou chose: %s\n\n", player1);
}
}
GrybośIch versuchte Ihre Codierung "Spieler = neuer Spieler (Type.ROGUE);" und wenn ich mein Haupt kompiliere, sagt es "Fehler: kann Symbol nicht finden". Irgendwelche Ideen? –
Ist der Enum-Typ in der AdventureGameV3-Klasse sichtbar? public enum Typ {ROGUE, PALADIN, JACKIE_CHAN, GOBLIN, SKELETON, WIZARD} –
Laut der Rubrik ist die öffentliche Enumeration Typ {ROGUE ...} in der abstrakten Zeichenklasse, also nicht. Aus diesem Grund bin ich sehr verwirrt darüber, wie ich dies als Hauptsache bezeichnen würde. –