teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

ほかのクラスを記入しました

2017/04/23 05:58

投稿

tomagurosu
tomagurosu

スコア37

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,81 @@
1
1
  ```Java
2
+ public class Hero{
3
+ String name;
4
+ int hp;
5
+ int atk;
6
+ boolean def; //防御状態かどうか
7
+ boolean esc; //逃走状態かどうか
8
+ Hero(){
9
+ this.hp = 100;
10
+ this.atk = 15;
11
+ }
12
+ void act(){
13
+ System.out.println("1 攻撃 2防御 3逃走");
14
+ int commandSelect = new java.util.Scanner(System.in).nextInt(); //コマンドの入力
15
+ switch (commandSelect){
16
+ case 1:
17
+ attack(); //アタックメソッドの呼び出し
18
+ break;
19
+ case 2:
20
+ defence(); //ディフェンスメソッドの呼び出し
21
+ break;
22
+ case 3:
23
+ escape(); //逃走メソッドの呼び出し
24
+ break;
25
+ }
26
+ }
27
+ void attack(){
28
+ int damage = (int)((Math.random()+1)*this.atk); //自分の攻撃力×1.0^1.9のダメージを生成
29
+ e.hp -= damage;
30
+ System.out.println("あなたは"+e.name+"に"+damage+"ダメージ与えた!!\r\n残りの体力は"+e.hp);
31
+ }
32
+ void defence(){
33
+ def = true;
34
+ }
35
+ void escape(){
36
+ int a = (int)(Math.random()*10); //二分の一で逃げれるかどうか
37
+ if (a >= 4 ){
38
+ esc = true;
39
+ }else{
40
+ esc = false;
41
+ }
42
+ }
43
+ }
44
+ ```
45
+ ```Java
46
+ public class Enemy{
47
+ String name;
48
+ int atk;
49
+ int hp;
50
+ Enemy(){
51
+ this.hp = 200;
52
+ this.atk = 5;
53
+ this.name = "スライム";
54
+ }
55
+ void act(){
56
+ int a = new java.util.Random().nextInt(2)++;
57
+ switch (a){
58
+ case 1:
59
+ attack();
60
+ break;
61
+ case 2:
62
+ grin();
63
+ break;
64
+ }
65
+ }
66
+ void attack(){
67
+ int damage = (int)((Math.random()+1)*this.atk); //自分の攻撃力×1.0^1.9のダメージを生成
68
+ h.hp -= damage;
69
+ if (h.def == true){
70
+ damage = damage/2;
71
+ }
72
+ System.out.println(tihs.name+"の攻撃"+damage+"のダメージを食らった!!");
73
+ }
74
+ void grin(){
75
+ System.out.println(this.name+"はにやにやしている");
76
+ }
77
+ }
78
+ ``````Java
2
79
  public class BattleSystem{
3
80
  public static void main(String[] args){
4
81
  Hero h = new Hero();
@@ -24,4 +101,6 @@
24
101
  }
25
102
  ```
26
103
  簡単なゲームを作っているのですが
27
- 上記のそれぞれのactメソッドにはswitchでattackメソッドなどコマンド入力で選べるようにしてあるのですがHeroクラスのattackメソッドではEnemyクラスのhpフィールドといったふうにそれぞれがそれぞれのフィールドにアクセスしたいのですがアクセスすることができません。どうすればいいでしょうか?よろしくお願いします
104
+ 上記のそれぞれのactメソッドにはswitchでattackメソッドなどコマンド入力で選べるようにしてあるのですがHeroクラスのattackメソッドではEnemyクラスのhpフィールドといったふうにそれぞれがそれぞれのフィールドにアクセスしたいのですがアクセスすることができません。どうすればいいでしょうか?よろしくお願いします
105
+ 追記 すみませんほかのクラスを記入するの忘れていました、、、
106
+ 具体的にはHeroクラスのattackメソッドでe.hpを使えない、といった感じです。追加しましたので改めてよろしくお願いします。