質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

解決済

別クラスのフィールドにアクセス

tomagurosu
tomagurosu

総合スコア37

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

2回答

0評価

0クリップ

6678閲覧

投稿2017/04/23 05:32

編集2017/04/23 05:58

Java

public class Hero{ String name; int hp; int atk; boolean def; //防御状態かどうか boolean esc; //逃走状態かどうか Hero(){ this.hp = 100; this.atk = 15; } void act(){ System.out.println("1 攻撃 2防御 3逃走"); int commandSelect = new java.util.Scanner(System.in).nextInt(); //コマンドの入力 switch (commandSelect){ case 1: attack(); //アタックメソッドの呼び出し break; case 2: defence(); //ディフェンスメソッドの呼び出し break; case 3: escape(); //逃走メソッドの呼び出し break; } } void attack(){ int damage = (int)((Math.random()+1)*this.atk); //自分の攻撃力×1.0^1.9のダメージを生成 e.hp -= damage; System.out.println("あなたは"+e.name+"に"+damage+"ダメージ与えた!!\r\n残りの体力は"+e.hp); } void defence(){ def = true; } void escape(){ int a = (int)(Math.random()*10); //二分の一で逃げれるかどうか if (a >= 4 ){ esc = true; }else{ esc = false; } } }

Java

public class Enemy{ String name; int atk; int hp; Enemy(){ this.hp = 200; this.atk = 5; this.name = "スライム"; } void act(){ int a = new java.util.Random().nextInt(2)++; switch (a){ case 1: attack(); break; case 2: grin(); break; } } void attack(){ int damage = (int)((Math.random()+1)*this.atk); //自分の攻撃力×1.0^1.9のダメージを生成 h.hp -= damage; if (h.def == true){ damage = damage/2; } System.out.println(tihs.name+"の攻撃"+damage+"のダメージを食らった!!"); } void grin(){ System.out.println(this.name+"はにやにやしている"); } } ``````Java public class BattleSystem{ public static void main(String[] args){ Hero h = new Hero(); Enemy e = new Enemy(); System.out.println("あなたの名前を入力してください"); h.name = new java.util.Scanner(System.in).nextLine(); System.out.println(e.name+"が現れた!!\r\n君はどうする?\r\n現在の体力:"+h.hp); while (true){ //ここからバトルのループのwhile h.act(); //主人公のターンでの行動 e.act(); //敵のターンでの行動 if (h.hp == 0){ //バトルの結果表示のif System.out.println("GAME OVER"); break; }else if (h.esc == true){ System.out.println("逃亡に成功した"); break; }else{ System.out.println("YOU WIN"); break; } } //ここまでwhileループ } }

簡単なゲームを作っているのですが
上記のそれぞれのactメソッドにはswitchでattackメソッドなどコマンド入力で選べるようにしてあるのですがHeroクラスのattackメソッドではEnemyクラスのhpフィールドといったふうにそれぞれがそれぞれのフィールドにアクセスしたいのですがアクセスすることができません。どうすればいいでしょうか?よろしくお願いします
追記 すみませんほかのクラスを記入するの忘れていました、、、
具体的にはHeroクラスのattackメソッドでe.hpを使えない、といった感じです。追加しましたので改めてよろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。