对于我的项目,我必须创建一个抽象类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);
}
}
答案 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),提示您编译错误并帮助您尽早发现错误。 :)