2016-04-09 9 views
0

私はかなり掘り下げてしまいました。私が探している答えを見つけることができないようです。私はかなり間違っているので、間違った質問をしているかもしれません。異なるクラスの変数を操作するための基本

..

は、とにかく、私は練習のためのシンプルなポケモンスタイルのゲームを構築しようとしていると私は対戦相手やプレイヤーが戦闘イベント中に変更するポイントを打つように見えることはできません私はそれはあなたが選択していMath.subtractクラスは、それは私が「相手のCLから構築されたオブジェクトからraccoon1.hpを引っ張るだけで

public static int subtract(int x, int y){  
     return (x-y);   
    } 

ある

if(select == 1){ 
      System.out.println("You strike at the raccoon!"); 
      System.out.println("You deal " + play1.atk + " damage!"); 
      Math.subtract(raccoon1.hp, play1.atk); 

:次のコードで攻撃する1お尻はちょうど:

public class Opponent { 
    public int hp = 5; 
    public int def = 0; 
    public int atk = 1; 
} 

プレイヤーは同じように設定されています。

私はちょうど行方不明であると思っています。そして/または何かばかなことをしていますが、新しいプログラマーへの助けに感謝します。

ありがとうございます!

答えて

1
Racoon1.hp = Math.subtract(raccoon1.hp, play1.atk) 

あなたはraccoon.hpに等しい戻り値を設定する必要があり、または他の値を返すにはポイントがありません。

1

これは適切なオブジェクト指向プログラミングの問題です。変数に関してそれについて考えるのではなく、それを方法の点で考える。変数を直接操作しないで、クラスによって行われた操作を通して変数を操作しようとしないでください。

お使いの場合には

...あなたのPokemonクラスで

if(select == 1){ 
      System.out.println("You strike at the raccoon!"); 
      System.out.println("You deal " + play1.atk + " damage!"); 
      //reduce the health by the current attack value of the player 
      racoon.reduceHealth(play1.getAttackValue()); 

、またはあなたが新しいポケモンを作成する際のインスタンスを生成するクラスを名前の何でも、このようなメソッドを作成...

あなたは新しいプレーヤーを作成する際のインスタンスをインスタンス化し、そのクラスには、このようなメソッドを作成するという名前のものは何でもあなたの Playerクラス、またはIn
public void reduceHealth(int attackValue){ 
    this.hp = this.hp - attackValue; 
} 

...

public int getAttackValue(){ 
    return this.atk; 
} 

このようにして、オブジェクトに対して行われた操作は、他のクラスではなく、それ自身のクラスによって行われます。情報を取得するときは、必要な情報を返すメソッドを作成します。オブジェクトの変数を操作するときは、オブジェクトのメソッドを使用して操作を行います。

+0

を行うことができた後、あなたはその

public class Opponent { public int hp = 5; public int def = 0; public int atk = 1; public void attack(Opponent target){ target.hp -= atk; } } 

のような代をTODOの提案は、あなたの答えのためにどうもありがとうございます、これは本当に私はどのように「この」作品を理解して助けました。 – lael

+0

問題ありません!あなたのゲームで幸運! – Zulfe

0

私はあなたが単に

Opponent player = new Opponent(); 
Opponent badGuy = new Opponent(); 
player.attack(badGuy); 
関連する問題