質問編集履歴

1

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

2019/07/10 03:30

投稿

Neru_K
Neru_K

スコア19

test CHANGED
File without changes
test CHANGED
@@ -92,6 +92,10 @@
92
92
 
93
93
  Hanako,Yoshikoに上記のHeroineクラスを継承させたうえで、MainクラスとTaroクラスのそれぞれで好感度パラメーターを受け取ろうとして、やり方がわからなくなりました。
94
94
 
95
+ (※下部「追記」にて詳細を書き加えました)
96
+
97
+
98
+
95
99
  getKoukando();を使うには、まずHanakoやYoshikoをインスタンス化しないといけませんよね?
96
100
 
97
101
  ですがMainクラスとTaroクラスでそれぞれにHanako hanako = new Hanako();としてしまうと、作られた2つのhanakoインスタンスは全く別物となるのでしょうか?
@@ -117,3 +121,229 @@
117
121
 
118
122
 
119
123
  であるならば、koukandoやnameをstatic変数にすればいいのかな? と思いHeroineクラスのメンバをあらかたstaticにしてみたところ、ヒロインの名前が両方とも「よしこ」になるなどHanakoとYoshikoのパラメーターがごっちゃに混ざってしまいました……汗
124
+
125
+
126
+
127
+ ### 追記(MainクラスとTaroクラスのそれぞれで好感度パラメーターを受け取ろうとしたことについて)
128
+
129
+
130
+
131
+ Taroクラスには、以下のようにたろうくんが実行する行動を記載しました。
132
+
133
+ ```Java
134
+
135
+ import java.util.Scanner;
136
+
137
+ public class Taro{
138
+
139
+ public String name;
140
+
141
+ public int hp;
142
+
143
+ public final int max_hp;
144
+
145
+ public int intelligence;
146
+
147
+
148
+
149
+ public void action(){
150
+
151
+ Scanner scan = new Scanner(System.in);
152
+
153
+ System.out.println("行動を選んでください。");
154
+
155
+ System.out.println("1.移動 2.勉強 3.寝る");
156
+
157
+ int val = scan.nextInt();
158
+
159
+ switch(val){
160
+
161
+ case 1:
162
+
163
+ this.move();
164
+
165
+ break;
166
+
167
+
168
+
169
+ case 2:
170
+
171
+ this.study();
172
+
173
+ break;
174
+
175
+
176
+
177
+ case 3:
178
+
179
+ this.sleep();
180
+
181
+ break;
182
+
183
+ }
184
+
185
+ }
186
+
187
+
188
+
189
+ public void sleep(){
190
+
191
+ this.hp = 100;
192
+
193
+ System.out.println(this.name + "は眠った。体力が回復した!\n");
194
+
195
+ }
196
+
197
+
198
+
199
+ public void move(){
200
+
201
+
202
+
203
+
204
+
205
+ Scanner s = new Scanner(System.in);
206
+
207
+ Hanako hanako = new Hanako();
208
+
209
+ Yoshiko yoshiko = new Yoshiko();
210
+
211
+ System.out.println("どこに移動しますか?");
212
+
213
+ System.out.println("1.校舎裏 2.公園 3.プール 4.帰宅する");
214
+
215
+ int val = s.nextInt();
216
+
217
+ this.hp-=5;
218
+
219
+ switch(val){
220
+
221
+ case 1:
222
+
223
+ System.out.println("校舎裏に移動した。");
224
+
225
+ hanako.upKoukando();
226
+
227
+ break;
228
+
229
+
230
+
231
+ case 2:
232
+
233
+ System.out.println("公園に移動した。");
234
+
235
+ yoshiko.upKoukando();
236
+
237
+ break;
238
+
239
+
240
+
241
+ case 3:
242
+
243
+ System.out.println("プールに移動した。");
244
+
245
+ break;
246
+
247
+
248
+
249
+ case 4:
250
+
251
+ System.out.println("帰宅した。");
252
+
253
+ break;
254
+
255
+ }
256
+
257
+
258
+
259
+ }
260
+
261
+
262
+
263
+ public void study(){
264
+
265
+ this.hp -= 10;
266
+
267
+ this.intelligence += 5;
268
+
269
+ System.out.println("知力が5上がった。\n");
270
+
271
+ }
272
+
273
+
274
+
275
+ //-------------コンストラクタで初期化-----------
276
+
277
+ public Taro(){
278
+
279
+ this.hp=100;
280
+
281
+ this.max_hp=100;
282
+
283
+ this.intelligence = 60;
284
+
285
+ }
286
+
287
+ }
288
+
289
+ ```
290
+
291
+ はなこさんはいつも校舎裏に、よしこさんはいつも公園にいるということにして、会いにいくと(それだけで)好感度が上がるということにしました。
292
+
293
+ この際にupKoukando()メソッドを使うため、HanakoクラスとYoshikoクラスのそれぞれをインスタンス化しています。
294
+
295
+
296
+
297
+ そしてMainクラスでは、
298
+
299
+ ```Java
300
+
301
+ public class Main{
302
+
303
+ static int dayCount=1;
304
+
305
+
306
+
307
+ public static void main(String[] args){
308
+
309
+ Taro taro = new Taro();
310
+
311
+ taro.name = "たろう";
312
+
313
+
314
+
315
+ for(int i=1;i<11;i++){
316
+
317
+ putStatus(taro.intelligence,taro.hp);
318
+
319
+ taro.action();
320
+
321
+ dayCount++;
322
+
323
+ }
324
+
325
+ }
326
+
327
+ //------------------
328
+
329
+ public static void putStatus(int intel,int hp){
330
+
331
+ System.out.println("+++++++++++++++++++++++++++");
332
+
333
+ System.out.println(" "+dayCount+"日目"+" "+"知性"+intel+" "+"体力"+hp);
334
+
335
+ System.out.println("の好感度");
336
+
337
+ System.out.println("の好感度");
338
+
339
+ System.out.println("+++++++++++++++++++++++++++");
340
+
341
+ }
342
+
343
+ }
344
+
345
+ ```
346
+
347
+ for文で10日間のループを、putStatus()で現在のパラメーターを表示させました。
348
+
349
+ そしてputStatus()の中、3,4行目の「System.out.println("の好感度");」のところにそれぞれはなこ、よしこの名前と好感度を呼び出そうと、mainメソッド内で再度Hanako hanako = new Hanako();としたところ、MainクラスとTaroクラスにそれぞれ別のhanakoインスタンスができてしまいうまくいきませんでした。