2016-11-12 5 views
0

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); 
} 

}

Antwort

1

ihren Spieler-Klasse.

+0

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? –

+0

Ist der Enum-Typ in der AdventureGameV3-Klasse sichtbar? public enum Typ {ROGUE, PALADIN, JACKIE_CHAN, GOBLIN, SKELETON, WIZARD} –

+0

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. –

0

Sie versuchen, einer (abstrakten) Klasse "Character" eine Aufzählung "Type" zuzuweisen. Dies ist ein Typenkonflikt und führt zu einem Kompilierungsfehler.

Sie möchten eine neue Player-Instanz erstellen.

Ich empfehle Ihnen, eine integrierte Entwicklungsumgebung (IDE) wie Eclipse, IntelliJ oder Netbeans zu verwenden, die Sie auf Kompilierungsfehler hinweisen und Ihnen helfen, die Fehler früh zu finden. :)

+0

In der Rubrik, heißt es: * Character (abstrakte Klasse) -Öffentlicher Enum Name: Typ Werte: ROGUE, PALADIN .... Würde ich dieses öffentliche ENUM in der Spieler-Klasse setzen können? –

+0

Sehen Sie sich https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html zur Verwendung von Enums an. Ich denke, es wird die Verwendung und Instanziierung eines Enum-Typs deutlicher machen. – Arman

+0

Ich habe diesen Artikel schon einmal gelesen und es ist mir immer noch sehr unklar, wie man eine Enumeration mit einem Konstruktor implementiert (erforderlich in der Klasse Character). Irgendwelche Hinweise? –

Verwandte Themen