2016-11-26 27 views
-4

を加えるので、私はRPGコードをやっています。ダンジョンズやドラゴンのように。私の特に問題は属性です。基本的にアプリケーションは統計をプレイヤーに与え、プレイヤーが受け取った統計が気に入らなければ、アプリケーションは彼らにリロールするオプションを与えます。最初のロールはうまくいきますが、ユーザーがリロールを選択した場合、統計情報(最初と次の両方)が互いに加算されます。ここに私のコードは次のとおりです。それはちょうど

主な方法:

package bagOfHolding; 

    public class Advanced { 
    public static void main(String [] args){ 
    GameMaster.game(); 

    } 
    } 

The Dice Class (this rolls the stats for the statistics): 

package bagOfHolding; 

import java.util.Random; 

public class DiceBag { 
    private static int sum; 

    public static int rollD6() { 
     int[] Dice = new int[3]; 
     Random num = new Random(); 

     for (int i = 0; i < Dice.length; i++) { 
      Dice[i] = num.nextInt((6)) + 1; 
     } 

     for (int i : Dice) { 
      sum += i; 
     } 
     return sum; 
    } 
    // public static int getSum() { 
    // return sum; 
    // } 
    // public static void setSum(int sum) { 
    // DiceBag.sum = sum; 
    // } 
} 

ゲームマスター(これは、全体のゲームをして):

package bagOfHolding; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class GameMaster { 
    public static void game() { 
     Hero.attributes(); 
    } 

    public static void ReRoll() { 
     BufferedReader delta = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("Would you like to reroll your hero? 1) Yes or 2) No"); 
     System.out.println("Please enter a number"); 
     System.out.println("Any number other than 1 or 2 will exit the application"); 
     try { 
      String userInput = delta.readLine(); 
      int input = Integer.parseInt(userInput); 
      if (input == 1) { 
       Hero.setStrength(DiceBag.rollD6()); 
       Hero.setDexterity(DiceBag.rollD6()); 
       Hero.setIntelligence(DiceBag.rollD6()); 
       Hero.attributes(); 
      } else if (input == 2) { 
       System.exit(0); 
      } else { 
       System.exit(0); 
      } 
     } catch (NumberFormatException NFE) { 
      System.out.println("Invalid"); 
     } catch (IOException IOE) { 
      System.out.println("Invalid"); 
     } 
    } 
} 

主人公のクラス(これはすべての統計情報を持っています):

package bagOfHolding; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Hero { 
    /* 
    * Attributes - Randomly determined by 3d6 
    * 
    */ 
    /* 
    * -3 attributes - Strength - Damage bonus - If over 15 every pt = +1 (_++;) 
    * - Negative Damage Bonus - If under 10 every pt = -1 (_--;) - Dexterity 
    * -Strike bonus - every 2 pts over 14 = (_%2 + 1) - Negative Strike bonus - 
    * every 2 pts below 10 = (_%2 -1) - Dodge bonus - every 2 pts over 15 = 
    * (_%2 + 1) - Negative dodge bonus - every 2 pts below 11 = (_%2 -1) - 
    * Intelligence -Spell Strength Bonus - every pt over 15 = (++2) - Negative 
    * Spell Strength Bonus - every pt below 11 = (--2) 
    * 
    * Base Attributes - Health -Strength * 10 - MP - Intelligence *5 
    */ 
    private static int strength = DiceBag.rollD6(); 
    private static int intelligence = DiceBag.rollD6(); 
    private static int dexterity = DiceBag.rollD6(); 

    public static int getIntelligence() { 
     return intelligence; 
    } 

    public static void setIntelligence(int intelligence) { 
     Hero.intelligence = intelligence; 
    } 

    public static int getDexterity() { 
     return dexterity; 
    } 

    public static void setDexterity(int dexterity) { 
     Hero.dexterity = dexterity; 
    } 

    public static int getStrength() { 
     return strength; 
    } 

    public static void setStrength(int strength) { 
     Hero.strength = strength; 
    } 

    public static void attributes() { 
     strength = getStrength(); 
     System.out.println("Here is your hero: "); 
     // DiceBag.rollD6(); 
     System.out.println("Strength = " + strength); 
     if (strength > 15) { 
      System.out.println("Damage Bonus = " + "+" + (strength - 15)); 
     } else if (strength < 10) { 
      System.out.println("Negative Damage Bonus = " + "-" + (10 - strength)); 
     } else { 
      System.out.println("You do not have damage bonus"); 
     } 

     intelligence = getIntelligence(); 
     System.out.println("Intelligence = " + intelligence); 
     if (intelligence > 15) { 
      System.out.println("Spell Strength Bonus = " + "+" + ((intelligence - 15) * 2)); 
     } else if (strength < 11) { 
      System.out.println("Negative Spell Strength Bonus = " + "-" + ((11 - intelligence) * 2)); 
     } else { 
      System.out.println("You do not have a spell strength bonus"); 
     } 

     dexterity = getDexterity(); 
     System.out.println("Dexterity = " + dexterity); 
     if (dexterity > 15 && dexterity % 2 == 0) { 
      System.out.println("Dodge Bonus = " + "+" + (dexterity - 15)); 
     } else if (dexterity < 11 && dexterity % 2 == 0) { 
      System.out.println("Negative Dodge Bonus = " + "-" + (11 - dexterity)); 
     } else { 
      System.out.println("You do not have a dodge bonus"); 
     } 
     if (dexterity > 14 && dexterity % 2 == 0) { 
      System.out.println("Strike Bonus = " + "+" + (dexterity - 14)); 
     } else if (dexterity < 10 && dexterity % 2 == 0) { 
      System.out.println("Negative Strike bonus = " + "-" + (10 - dexterity)); 
     } else { 
      System.out.println("You do not have a strike bonus"); 
     } 

     int health = strength * 10; 
     System.out.println("Health = " + health); 

     int MP = intelligence * 5; 
     System.out.println("MP = " + MP); 

     GameMaster.ReRoll(); 
    } 
} 
+1

これはひどいタイトルとコードの大きな塊であり、多分[MCVE]に行き、より良いタイトルを思い付くでしょう。 – rene

+1

それが追加されているという事実は、あなたを正しい方向に向けるのに役立つはずです。これはちょうどダンプするコードのトンです。デバッガで統計情報を設定するプロセスをチェックして、変数値を確認します。どこか、あなたは以前の価値を保持しています。個人的には、統計情報をリセットするためにxyz.reset()を追加し、そうしたように再作成します。 (私は今、携帯電話に乗っていて、数日間、私の開発マシンにアクセスすることはできません。 – SirBagels

答えて

0

DiceBagの合計は、静的ではなく、ロールD6にローカルである必要があります。

関連する問題