2016-07-23 8 views
1

私はクラスとJavaプログラミングを学習するための簡単なキャラクター作成プログラムをプログラミングしています。クラスAからクラスBに戻り、次にメインクラスに戻りますか?

コードは進行中であり、実行可能ではありません。私はそれを動作させる方法がわからないためです。

私の問題は、詳細/情報/値を別のクラスから別のクラスに、次にメインクラスに正しく返す方法がわかりません。

私が解決しようとしているのは、weapon.javacharacteristic.javaに格納されている情報を取得する方法です。player.javaにそれらを使用することができます。つまり、ユーザーが戦士に1を入力するとします。それから自分の授業で武器と特性に関する情報を入手し、SetClassの方法の情報をPlayer.javaに返す必要があります。以下のような短い何かに


ユーザー入力= 1 =>のClassTypeは戦士=> weaponTypeはとにかく

ここで剣 であるならば、私のコードは、これまでのところです:

メインプログラム:

import java.util.*; 

public class characterCreationProgam { 

    private static Scanner input = new Scanner(System.in); 

    public static void main1(String[] args) { 

     try { 
      System.out.println("Welcome to the super simple character creator "); 
      System.out.println("Choose class: 1: Warrior 2: Wizard 3: Rogue 4: Healer "); 
      int class = input.nextInt(); 

      // creating new OOP 
      Player newCharacter = new Player(class); 

      newCharacter.setClass(class); 

      System.out.println("New character has been made: "); 
      newCharacter.printPlayer(); 

      System.out.println("Print character stats? 1: Yes 2: No "); 
      int answer = input.nextInt(); 
      if (answer == 1) { 
       newCharacter.printClass(); 
      } else if (answer == 2) { 
       return; 
      } 

      System.out.println("Print weapon stats? 1: Yes 2: No "); 
      int answer2 = input.nextInt(); 
      if (answer2 == 1) { 
       newCharacter.printWeapon(); 
      } else if (answer2 == 2) { 
       return; 
      } 

      System.out.println("Shutting down the program."); 
      System.exit(1); 
     } catch (Exception e) { 
      System.out.println("Error! Program closing."); 
      System.exit(1); 
     } 
    } 
} 

Player.Javaクラス

あなたはいつも Gettersを書き込むことによって、他のクラスからAtributesを得ることができます
public class Player { 

    private int class; 
    private String sex; 
    private int age; 
    private int weapon; 

    public Player(int class) { 
     this.class = class; 
     this.sex = ""; 
     this.age = 0; 
     this.weapon = 0; 
    } 

    // Method for setting the class 
    public void setClass(int class) { 

     if (class == 1) { // Warrior 
      // something here to return proper character class and weapon 
      // from their own class files 
      this.sex = "Male"; 
      this.age = 45; 

     } else if (class == 2) { // Wizard 
      // something here to return proper character class and weapon 
      // from their own class files 
      this.sex = "Female"; 
      this.age = 30; 

     } else if (class == 3) { // Rogue 
      // something here to return proper character class and weapon 
      // from their own class files 
      this.sex = "Female"; 
      this.age = 25; 

     } else if (class == 4) { // healer 
      // something here to return proper character class and weapon 
      // from their own class files 
      this.sukupuoli = "Male"; 
      this.age = 21; 

     } else { 
      System.out.println("Unkown class selection. "); 
     } 
    } 

    // Method to return/print character info 
    public void printPlayer() { 
     System.out.println("class: " + this.class + "\nGender: " 
      + this.sex + "\nAge: " + this.age + "\nWeapon: " 
      + this.weapon); 
    } 

    // Method to return/print class info 
    public void printClass() { 
     // Something here to return classInfo from CharacterClass.Java 
    } 

    // Method to return/print weapon info 
    public void printWeapon() { 
     // Something here to return weaponInfo from Weapon.Java 
    } 
} 

Characterstics.Javaクラス

public class Class { 

    private String className; 
    private int classLevel; 
    private String specialSkills; 

    public Class(String name, int level, String skills) { 
     this.className = name; 
     this.classLevel = level; 
     this.specialSkills = skills; 
    } 

    public void classType() { 

     if() { // Don't know what to put in here 
      this.className = "Warrior"; 
      this.classLevel = 90; 
      this.specialSkills = "Damage reduction"; 
      // Something to set correct weapon to this classType from 
      // weapon.java 

     } else if() { // Don't know what to put in here 
      this.className = "Wizard"; 
      this.classLevel = 75; 
      this.specialSkills = "Magic "; 
      // Something to set correct weapon to this classType from 
      // weapon.java 

     } else if() { // Don't know what to put in here 
      this.className = "Rogue"; 
      this.classLevel = 55; 
      this.specialSkills = "Dodge"; 
      // Something to set correct weapon to this classType from 
      // weapon.java 

     } else if() { // Don't know what to put in here 
      this.className = "Healer"; 
      this.classLevel = 69; 
      this.specialSkills = "Healing"; 
      // Something to set correct weapon to this classType from 
      // weapon.java 
     } 
    } 

    // Method to return characters details. 
    public void characterInfo() { 
     System.out.println("\nClass: " + this.className + "\nLevel: " 
      + this.classLevel + "\nSkills: " + this.specialSkills); 
    } 
} 

そして最後に...
Weapon.Javaクラス

public class Weapon { 

    // Luokan 
    private int damage; 
    private String type; 
    private String bonus; 

    public Weapon() { 
     this.damage = 0; 
     this.type = ""; 
     this.bonus = ""; 
    } 

    public void weaponType() { 

     if() { // Don't know what to put in here, class is warrior 
      this.type = "Sword"; 
      this.damage = 75; 
      this.bonus = "Armor penetration"; 

     } else if() { // Don't know what to put in here, class is wizard 
      this.type = "Staff"; 
      this.damage = 35; 
      this.bonus = "Spell casting"; 

     } else if() { // Don't know what to put in here, class is rogue 
      this.type = "Daggers"; 
      this.damage = 55; 
      this.bonus = "Poisoning enemies"; 

     } else if() { // Don't know what to put in here, class is healer 
      this.type = "Hammer"; 
      this.damage = 85; 
      this.bonus = "Stunning enemies"; 
     } 
    } 

    // Method to print weapon details. 
    public void weaponInfo() { 
     System.out.println("Weapon type: " + this.type + "\nDamage: " 
      + this.damage + "\nBonus: " + this.bonus); 
    } 
} 
+0

申し訳ありませんが、私は本当にその質問を理解できませんでした。それにもかかわらず、あなたのコードをOOPとして受け入れることができず、すでに言語にバインドされているため、変数名としてクラスを使用することはできません –

+0

また、インデントして作業する必要があります。 –

+0

私が解決しようとしていることweapon.javaと特性、javaに格納された情報を取得して、player.javaで使用できるようにする方法です。つまり、ユーザーが戦士に1を入力するとします。それから、WeaponとCharacteristicsの情報を自分のクラスから取得し、PlayerのSetClassメソッドの情報を返す必要があります。 – Daniel

答えて

2

また、ペドロ・デービッド氏は、クラスと変数の名前付けに「クラス」を使用することはできないと述べているため、Reserved Wordです。

これは言われて、ここにあなたの問題のために私の解決策(これは完璧にはほど遠いですが、うまくいけば、あなたは簡単にクラス間の情報を共有する方法を説明します)

ここ
import java.util.*; 

public class CharacterCreationProgam { 

    private static Scanner input = new Scanner(System.in); 

    public static void main(String[] args) { 

     try { 

      System.out.println("Welcome to the super simple character creator "); 
      System.out.println("Choose class: 1: Warrior 2: Wizard 3: Rogue 4: Healer "); 
      int race = input.nextInt(); 

      //creating new Player-Object: 
      Player player = new Player(race); 

      System.out.println("New character has been made: "); 

      //Character stats: 
      System.out.println("Print character stats? 1: Yes 2: No "); 
      int answer = input.nextInt(); 
      if (answer == 1) { 
       System.out.println("Race: " + player.getRace().getraceName() + 
         "\nGender: " + player.getSex() + 
         "\nAge: " + player.getAge()); 
      } 

      //Weapon stats: 
      System.out.println("Print weapon stats? 1: Yes 2: No "); 
      answer = input.nextInt(); 
      if (answer == 1) { 
       Weapon playerWeapon = player.getWeapon(); 
       System.out.println("Weapon Type: " + playerWeapon.getType() + 
         "\nDamage: " + playerWeapon.getDamage() + 
         "\nBonus: " + playerWeapon.getBonus()); 
      } 

     } catch (Exception e) { 
      System.err.println("Error: " + e); 
     }finally{ 
      input.close(); 
     } 


    } 

} 

がPlayer.javaで私の行くではあり:

public class Player { 

    private Race playerRace; 
    private String sex; 
    private int age; 
    private Weapon weapon; 


    public Player(int race) throws Exception{ 
     setRace(race); 
     setAtributes(); 
     setWeapon(); 
    } 

    private void setRace(int race) throws Exception{ 
     this.playerRace = new Race(race); 

    } 

    private void setAtributes() throws Exception{ 

     switch (playerRace.getraceName()) { 
      case "Warrior": 
       this.sex = "Male"; 
       this.age = 45; 
       break; 

      case "Wizard": 
       this.sex = "Female"; 
       this.age = 30; 
       break; 

      case "Rogue": 
       this.sex = "Female"; 
       this.age = 25; 
       break; 

      case "Healer": 
       this.sex = "Male"; 
       this.age = 21; 
       break; 

      default: 
       throw new Exception(); 
     } 
    } 

    private void setWeapon() throws Exception{ 
     weapon = new Weapon(playerRace); 
    } 

    public String getSex(){ 
     return sex; 
    } 

    public int getAge(){ 
     return age; 
    } 

    public Weapon getWeapon(){ 
     return weapon; 
    } 

    public Race getRace(){ 
     return playerRace; 
    } 

} 

マイRace.java:

public class Race { 

    private String raceName; //Enum would be BP 
    private int raceLevel; 
    private String specialSkill; //Another Class for the skills would be Nice in the long run 

    public Race(int race) throws Exception{ 
     setRace(race); 
    } 


    private void setRace(int race) throws Exception{ 

     switch (race) { 
      case 1: //Warrior 
       this.raceName = "Warrior"; 
       this.raceLevel = 90; 
       this.specialSkill = "Damage reduction"; 
       break; 

      case 2: //Wizard 
       this.raceName = "Wizard"; 
       this.raceLevel = 75; 
       this.specialSkill = "Magic"; 
       break; 

      case 3: //Rogue 
       this.raceName = "Rogue"; 
       this.raceLevel = 55; 
       this.specialSkill= "Dodge"; 
       break; 

      case 4: //Healer 
       this.raceName = "Healer"; 
       this.raceLevel = 69; 
       this.specialSkill= "Healing"; 
       break; 

      default: 
       throw new Exception(); //you should find a fitting Exception for this 
     } 
    } 

    public String getraceName(){ 
     return this.raceName; 
    } 

    public int getraceLevel(){ 
     return this.raceLevel; 
    } 

    public String specialSkill(){ 
     return this.specialSkill; 
    } 

} 

そしてWeapon.java:

public class Weapon { 

    private int damage; 
    private String type; 
    private String bonus; 

    public Weapon(Race race) throws Exception{ 
     setWeapon(race); 
    } 

    private void setWeapon(Race race) throws Exception{ 
     switch (race.getraceName()) { 
      case "Warrior": 
       this.type = "Sword"; 
       this.damage = 75; 
       this.bonus = "Armor penetration"; 
       break; 

      case "Wizard": 
       this.type = "Staff"; 
       this.damage = 35; 
       this.bonus = "Spell casting"; 
       break; 

      case "Rogue": 
       this.type = "Daggers"; 
       this.damage = 55; 
       this.bonus = "Poisoning enemies"; 
       break; 

      case "Healer": 
       this.type = "Hammer"; 
       this.damage = 85; 
       this.bonus = "Stunning enemies"; 
       break; 

      default: 
       throw new Exception(); 
     } 
    } 


    public int getDamage(){ 
     return damage; 
    } 

    public String getType(){ 
     return type; 
    } 

    public String getBonus(){ 
     return bonus; 
    } 

} 

私は、オブジェクトからのゲッターでSwitchステートメントを使用することがわかります。ご質問がありましたらお寄せください)

+1

これはハードupvote与えることです。あなたは彼にそれをする方法を教えて、それは動作します。これは良いOOPデザインからは遠いと言いました。キーワード「予約済み」について私に覚えてくれてありがとう:) –

+0

私は同意する、それは本当に素晴らしいことではない。私は自分のバージョンを書くのではなく、彼が書いたものに近づこうとしましたが、私は自分自身が専門家ではありません;) –

+0

しかし、私はそれがゲッターメソッドを書くのが簡単であることを願っています。 –

関連する問題