从扩展课程调用

时间:2016-11-12 00:34:34

标签: java function methods enums abstract

对于我的项目,我必须创建一个抽象类Character,然后创建一个扩展Character的类Player。因为class,Character,是抽象的,我不能把它称为main,而是我必须将类Player称为main。我试图调用该类是在AdventureGameV3中的切换案例中,这是主要功能。关于如何调用它的任何想法。我还附上了武器课程,但它对我的问题不应该是必不可少的。

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

}

2 个答案:

答案 0 :(得分:1)

使用您的Player类。

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

Player player;
System.out.print("Which character do you choose?: ");
characterChoice = keyboard.nextInt();
switch(characterChoice){
case 1:
   player = new Player(Type.ROGUE);
   break;


}
System.out.printf("\nYou chose: %s\n\n", player);

答案 1 :(得分:0)

您正在尝试分配枚举" Type"到(抽象)类"字符"。这是类型不匹配并导致编译错误。

您要做的是创建一个新的Player实例。

我建议您使用Eclipse,IntelliJ或Netbeans等集成开发环境(IDE),提示您编译错误并帮助您尽早发现错误。 :)