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

回答編集履歴

3

バグ修正

2019/07/11 01:43

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -52,7 +52,7 @@
52
52
  return null;
53
53
  }
54
54
  //------------------
55
- public static void putStatus(int intel,int hp){
55
+ public void putStatus(int intel,int hp){
56
56
  System.out.println("+++++++++++++++++++++++++++");
57
57
  System.out.println(" "+dayCount+"日目"+" "+"知性"+intel+" "+"体力"+hp);
58
58
  System.out.println(hanako.getName()+"の好感度"+hanako.getKoukando()); //修正
@@ -71,7 +71,7 @@
71
71
  int val = scan.nextInt();
72
72
  switch(val){
73
73
  case 1:
74
- this.move(Main world); //パラメータ追加
74
+ this.move(world); //パラメータ追加
75
75
  break;
76
76
  (略)
77
77
  public void move(Main world){ //パラメータ追加: Mainクラスを登場人物の住む"世界"とする
@@ -83,11 +83,11 @@
83
83
  int val = s.nextInt();
84
84
  this.hp-=5;
85
85
  switch(val){
86
- case 1:
86
+ case 1:
87
87
  System.out.println("校舎裏に移動した。");
88
88
  //hanako.upKoukando(); //削除
89
- //場所1(校舎裏)に居るヒロインを得て, 居たら(null で無ければ)好感度アップ
89
+ //その場所に居るヒロインを得て, 居たら(null で無ければ)好感度アップ
90
- Heroine heroine = world.getHeroine(1);
90
+ Heroine heroine = world.getHeroine(val);
91
91
  if(heroine != null) {
92
92
  System.out.println(heroine.getName() + "に会った");
93
93
  heroine.upKoukando(); //注意: 定義と使用でメソッド名が違っています.
@@ -95,6 +95,6 @@
95
95
  System.out.println("誰も居なかった");
96
96
  }
97
97
  break;
98
- //case 2 も上と同様(場所が違うだけ)の為省略
98
+ //case 2 も上と同様の為省略
99
99
  (略)
100
100
  ```

2

バグ: Main を生成するように修正

2019/07/11 01:43

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -8,29 +8,41 @@
8
8
  Mainクラス
9
9
  ```java
10
10
  public class Main{
11
+ //修正: static を削除, ヒロインを追加
11
- static int dayCount=1;
12
+ int dayCount=1;
12
- //追加: 登場人物は Main("世界")に常に存在する
13
- static Taro taro;
13
+ Taro taro;
14
- static Hanako hanako;
14
+ Hanako hanako;
15
- static Yoshiko yoshiko;
15
+ Yoshiko yoshiko;
16
16
 
17
+ //修正: "世界"を生成して起動する.
17
18
  public static void main(String[] args){
19
+ Main main = new Main();
20
+ main.start();
21
+ }
22
+
23
+ //コンストラクタ追加: "世界"もオブジェクトとして扱うため
24
+ Main() {
18
25
  taro = new Taro();
19
26
  taro.name = "たろう";
20
- //追加: ヒロインも生成
27
+ //ヒロイン追加
21
28
  hanako = new Hanako();
22
29
  hanako.setName("はなこ");
23
30
  yoshiko = new Yoshiko();
24
31
  yoshiko.setName("よしこ");
32
+ }
25
33
 
34
+ //追加: "世界"は動き出す
35
+ void start() {
36
+ dayCount=1;
26
37
  for(int i=1;i<11;i++){
27
38
  putStatus(taro.intelligence,taro.hp);
28
- taro.action();
39
+ taro.action(this);
29
40
  dayCount++;
30
41
  }
31
42
  }
43
+
32
44
  //追加: その場所に居るヒロインを返す. 居ない場合は null.
33
- public static Heroine getHeroine(int location) {
45
+ public Heroine getHeroine(int location) {
34
46
  switch(val){
35
47
  case 1: //校舎裏
36
48
  return hanako;
@@ -52,6 +64,16 @@
52
64
 
53
65
  Taroクラス
54
66
  ```java
67
+ public void action(Main world){ //パラメータ追加
68
+ Scanner scan = new Scanner(System.in);
69
+ System.out.println("行動を選んでください。");
70
+ System.out.println("1.移動 2.勉強 3.寝る");
71
+ int val = scan.nextInt();
72
+ switch(val){
73
+ case 1:
74
+ this.move(Main world); //パラメータ追加
75
+ break;
76
+ (略)
55
77
  public void move(Main world){ //パラメータ追加: Mainクラスを登場人物の住む"世界"とする
56
78
  Scanner s = new Scanner(System.in);
57
79
  //Hanako hanako = new Hanako(); //削除
@@ -74,4 +96,5 @@
74
96
  }
75
97
  break;
76
98
  //case 2 も上と同様(場所が違うだけ)の為省略
99
+ (略)
77
100
  ```

1

動作確認していないことを追記

2019/07/11 01:40

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -3,6 +3,8 @@
3
3
  私なら, ヒロインは主人公と同等にゲームの世界に存在するオブジェクトのほうが良いようにイメージします.
4
4
  ですので move の度に new はせず, Taro 同様に先に Main で new し, Taro の行動に応じてその場所に居るヒロインを得て変化するようにします.
5
5
 
6
+ **注: 以下のコードは切り貼りしただけで, コンパイル等確認していません.**
7
+
6
8
  Mainクラス
7
9
  ```java
8
10
  public class Main{