2016-10-25 5 views
1

私は単純なテキストベースのRPGゲームの開発に取り組んでいます。現在、私は、プレーヤーの進行状況を再オープンして読み込むことができるテキストファイルに保存するシステムに取り組んでいます。これが私の問題に遭遇した場所です。クラス内の1つの変数の値を返すgetterを呼び出すと、ゲッターは設定したデフォルト値の0を返し、ゲーム全体で値を変更したことを認識しません。他のクラスのjava呼び出しメソッドが変更された変数を認識しない

文字クラス

public class Character 
{ 
    private int _strength = 0; //initialize the strength variable 

    public Character() //constructor 
    { } 

    public void setStrength(int strength) //sets the value of strength 
    { _strength = strength; } 

    public int getStrength() //gets the value of strength 
    { return _strength; } 
} 

私はコードで値をメインゲームで文字変数を作成し、強度を割り当てた場合:私は、主な機能せずに別のクラスに行けば

public static void main(String[] args) 
{ 
    Character character = new Character(); //initializes the Character variable 

    character.setStrength(5); //sets the character's strength to 5 
    System.out.println(character.getStrength()); //prints out 5 as expected. 
} 

それには:

public class SaveSystem 
{ 
    private Character character = new Character(); //exactly the same as above... 

    public SaveSystem() 
    { } 

    public void saveGame() 
    { 
     //just to test the methods used earlier 
     System.out.println(character.getStrength())); 
    } 
} 

私はそのクラスに戻ってくることができますctionと言う:

public static void main(String[] args) 
{ 
    Character character = new Character(); //initializes the Character variable 
    SaveSystem save = new SaveSystem(); 

    character.setStrength(5); //sets the character's strength to 5 
    save.saveGame(); //containing nothing but the character.getStrength() method 
} 

、それは5の同じ値を印刷していしかし、それは強度変数が文字クラスに初期化されるときに割り当てられ、0の値を出力します。示すように、私は文字クラスに強度のデフォルト値を変更した場合:

public class Character 
{ private int _strength = 5; //initialize the strength variable } 

その後、メインクラスでsave.saveGameの方法は、私は今、数日間、この上で立ち往生されている5をプリントアウトし、私の努力にもかかわらず、Googleはほんの少しでも役に立たなかった。

+2

あなたは[MCVE]を投稿することができますか? – khelwood

+1

どちらも正しいです。私はここで正しいものとして受け入れる人がどれかわからない。手伝ってくれてどうもありがとう!私はこれにしばらく固執してきた! – dragonfyyre

答えて

1

問題は、保存する文字を渡すのではなく、保存オブジェクトを作成するときに新しい文字を作成することです。好きその後

public class SaveSystem 
{ 
    public SaveSystem() 
    { } 

    public void saveGame(Character character) 
    { 
     //just to test the methods used earlier 
     System.out.println(character.getStrength())); 
    } 
} 

あなたがそれを呼びたい:あなたはこのような何かを試してみてください

public static void main(String[] args) 
{ 
    Character character = new Character(); //initializes the Character variable 
    SaveSystem save = new SaveSystem(); 

    character.setStrength(5); //sets the character's strength to 5 
    save.saveGame(character); //containing nothing but the character.getStrength() method 
} 
1

をごSaveSystem自体が新しいものを作成して保存するのではなく、既存のCharacterオブジェクトを保存することになっていますそれら。

SaveSystemで作成を削除し、Characterを保存メソッドに渡します。

public class SaveSystem 
{ 


    public SaveSystem() 
    { } 

    public void saveGame(Character character) 
    { 
     //just to test the methods used earlier 
     System.out.println(character.getStrength())); 
    } 
} 

そして

public static void main(String[] args) 
{ 
    Character character = new Character(); //initializes the Character variable 
    SaveSystem save = new SaveSystem(); 

    character.setStrength(5); //sets the character's strength to 5 
    save.saveGame(character); 
} 
関連する問題