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

質問編集履歴

1

試みたことと、実際のコードの追記

2019/07/10 03:30

投稿

Neru_K
Neru_K

スコア19

title CHANGED
File without changes
body CHANGED
@@ -45,6 +45,8 @@
45
45
  ### 発生した問題
46
46
 
47
47
  Hanako,Yoshikoに上記のHeroineクラスを継承させたうえで、MainクラスとTaroクラスのそれぞれで好感度パラメーターを受け取ろうとして、やり方がわからなくなりました。
48
+ (※下部「追記」にて詳細を書き加えました)
49
+
48
50
  getKoukando();を使うには、まずHanakoやYoshikoをインスタンス化しないといけませんよね?
49
51
  ですがMainクラスとTaroクラスでそれぞれにHanako hanako = new Hanako();としてしまうと、作られた2つのhanakoインスタンスは全く別物となるのでしょうか?
50
52
  これはMainとTaroの二つのクラスで好感度パラメーターを受け取ろうとする設計自体が、そもそもおかしいのでしょうか。
@@ -57,4 +59,117 @@
57
59
 
58
60
  ### 補足情報(他に試してみたこと)
59
61
 
60
- であるならば、koukandoやnameをstatic変数にすればいいのかな? と思いHeroineクラスのメンバをあらかたstaticにしてみたところ、ヒロインの名前が両方とも「よしこ」になるなどHanakoとYoshikoのパラメーターがごっちゃに混ざってしまいました……汗
62
+ であるならば、koukandoやnameをstatic変数にすればいいのかな? と思いHeroineクラスのメンバをあらかたstaticにしてみたところ、ヒロインの名前が両方とも「よしこ」になるなどHanakoとYoshikoのパラメーターがごっちゃに混ざってしまいました……汗
63
+
64
+ ### 追記(MainクラスとTaroクラスのそれぞれで好感度パラメーターを受け取ろうとしたことについて)
65
+
66
+ Taroクラスには、以下のようにたろうくんが実行する行動を記載しました。
67
+ ```Java
68
+ import java.util.Scanner;
69
+ public class Taro{
70
+ public String name;
71
+ public int hp;
72
+ public final int max_hp;
73
+ public int intelligence;
74
+
75
+ public void action(){
76
+ Scanner scan = new Scanner(System.in);
77
+ System.out.println("行動を選んでください。");
78
+ System.out.println("1.移動 2.勉強 3.寝る");
79
+ int val = scan.nextInt();
80
+ switch(val){
81
+ case 1:
82
+ this.move();
83
+ break;
84
+
85
+ case 2:
86
+ this.study();
87
+ break;
88
+
89
+ case 3:
90
+ this.sleep();
91
+ break;
92
+ }
93
+ }
94
+
95
+ public void sleep(){
96
+ this.hp = 100;
97
+ System.out.println(this.name + "は眠った。体力が回復した!\n");
98
+ }
99
+
100
+ public void move(){
101
+
102
+
103
+ Scanner s = new Scanner(System.in);
104
+ Hanako hanako = new Hanako();
105
+ Yoshiko yoshiko = new Yoshiko();
106
+ System.out.println("どこに移動しますか?");
107
+ System.out.println("1.校舎裏 2.公園 3.プール 4.帰宅する");
108
+ int val = s.nextInt();
109
+ this.hp-=5;
110
+ switch(val){
111
+ case 1:
112
+ System.out.println("校舎裏に移動した。");
113
+ hanako.upKoukando();
114
+ break;
115
+
116
+ case 2:
117
+ System.out.println("公園に移動した。");
118
+ yoshiko.upKoukando();
119
+ break;
120
+
121
+ case 3:
122
+ System.out.println("プールに移動した。");
123
+ break;
124
+
125
+ case 4:
126
+ System.out.println("帰宅した。");
127
+ break;
128
+ }
129
+
130
+ }
131
+
132
+ public void study(){
133
+ this.hp -= 10;
134
+ this.intelligence += 5;
135
+ System.out.println("知力が5上がった。\n");
136
+ }
137
+
138
+ //-------------コンストラクタで初期化-----------
139
+ public Taro(){
140
+ this.hp=100;
141
+ this.max_hp=100;
142
+ this.intelligence = 60;
143
+ }
144
+ }
145
+ ```
146
+ はなこさんはいつも校舎裏に、よしこさんはいつも公園にいるということにして、会いにいくと(それだけで)好感度が上がるということにしました。
147
+ この際にupKoukando()メソッドを使うため、HanakoクラスとYoshikoクラスのそれぞれをインスタンス化しています。
148
+
149
+ そしてMainクラスでは、
150
+ ```Java
151
+ public class Main{
152
+ static int dayCount=1;
153
+
154
+ public static void main(String[] args){
155
+ Taro taro = new Taro();
156
+ taro.name = "たろう";
157
+
158
+ for(int i=1;i<11;i++){
159
+ putStatus(taro.intelligence,taro.hp);
160
+ taro.action();
161
+ dayCount++;
162
+ }
163
+ }
164
+ //------------------
165
+ public static void putStatus(int intel,int hp){
166
+ System.out.println("+++++++++++++++++++++++++++");
167
+ System.out.println(" "+dayCount+"日目"+" "+"知性"+intel+" "+"体力"+hp);
168
+ System.out.println("の好感度");
169
+ System.out.println("の好感度");
170
+ System.out.println("+++++++++++++++++++++++++++");
171
+ }
172
+ }
173
+ ```
174
+ for文で10日間のループを、putStatus()で現在のパラメーターを表示させました。
175
+ そしてputStatus()の中、3,4行目の「System.out.println("の好感度");」のところにそれぞれはなこ、よしこの名前と好感度を呼び出そうと、mainメソッド内で再度Hanako hanako = new Hanako();としたところ、MainクラスとTaroクラスにそれぞれ別のhanakoインスタンスができてしまいうまくいきませんでした。