継承を使用して小さなキャラクタビルダを作成しようとしています。私はCreateCharacter CharacterRaceとDwarfクラスを持っています。私はCreateCharacterでCharacterRace型の変数を作成し、CharacterRaceでDwarf型の変数を作成しました。私は主なメソッドのデモでCreateCharacterのオブジェクトを持っていて、Dwarfクラスのメソッドを呼び出させず、矮星のキャラクターにしています。私はcharacterRaceで矮星オブジェクトを渡すことを考えていますか?私はちょうど方法がわからない。私のコードをheres:(その少し長い私の謝罪)Object Java RPGキャラクタビルダを使用したアクセスクラスの変更
package characterCreation;
public class CreateCharacter {
private CharacterClass characterClass;
private CharacterRace characterRace;
private Name name;
public CreateCharacter(String characterName,CharacterClass characterClass,CharacterRace characterRace) {
this.name = new Name(characterName);
this.characterClass = characterClass;
this.characterRace = characterRace;
}
public CreateCharacter(){
}
public CharacterClass getCharacterClass() {
return characterClass;
}
public void setCharacterClass(CharacterClass characterClass) {
this.characterClass = characterClass;
}
public CharacterRace getCharacterRace() {
return characterRace;
}
public void setCharacterRace(CharacterRace characterRace) {
this.characterRace = characterRace;
}
public Name getName(){
return name;
}
public void setName(Name name){
this.name = name;
}
@Override
public String toString() {
return "CreateCharacter [name=" + name + ", characterRace=" + characterRace + ", characterClass="
+ characterClass + "]";
}
}
package characterCreation;
public class CharacterRace {
protected String raceName;
protected double mana;
protected double hp;
private Dwarf dwarf;
public CharacterRace(String raceName,double mana, double hp) {
this.raceName = raceName;
this.mana = mana;
this.hp = hp;
}
public CharacterRace(){
}
public String getRaceName() {
return raceName;
}
public Dwarf getDwarf() {
return dwarf;
}
public void setDwarf(Dwarf dwarf) {
this.dwarf = dwarf;
}
public double getMana() {
return mana;
}
public double getHp() {
return hp;
}
@Override
public String toString() {
return "CharacterRace [dwarf=" + dwarf + "]";
}
}
package characterCreation;
public class Dwarf extends CharacterRace {
public Dwarf(String raceName,double mana, double hp) {
super(raceName,mana,hp);
}
public double getMana() {
mana = 5;
return mana;
}
public double getHp() {
hp = 10;
return hp;
}
public String getRaceName(){
return raceName = "Dwarf";
}
@Override
public String toString() {
return "Dwarf [mana=" + mana + ", hp=" + hp + ", getRaceName()=" + getRaceName() + "]";
}
}
package characterCreation;
import java.util.Scanner;
public class CharacterDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
CreateCharacter create = new CreateCharacter();
System.out.println("Choose your Race: ");
String userRace = input.next();
create.setName(new Name("Daxel"));
//create.setCharacterRace(race);
System.out.println(create.getName());
//Dwarf dwarf = new Dwarf();
System.out.println(create.getCharacterRace().getDwarf().getRaceName());
//System.out.println(create.getCharacterRace().setDwarf(new Dwarf("dwarf",10,5)));
}
}
は私がちょうどすべての異なるメソッドを呼び出す方法を把握しようとしていたこの時点では、どうもありがとうございましたオブジェクトを作るためのさまざまなクラスは、後で入力したものに基づいて呼び出すためのユーザー入力を実装するつもりでした。これを設計するより良い方法があるのだろうか、正しい軌道に乗っているのだろうか? – Aaronbob49
CharacterRaceオブジェクトを構築するために私はユーザ入力 "userRace"を使う私の更新されたコードを見てください。繰り返しますが、あなたのゲーム/キャラクター/レースのデザイン方法によってまったく異なります。同様に、Dwarf自体がCharacterRaceを拡張しているのに対し、DwarfをCharacterRaceのプロパティとして配置する理由は何ですか? –