回答編集履歴
4
問題と思われる記述を追加
test
CHANGED
@@ -34,6 +34,8 @@
|
|
34
34
|
|
35
35
|
System.out.println("\nもう一度じゃんけんからだよ!");
|
36
36
|
|
37
|
+
break; //これが必要では?
|
38
|
+
|
37
39
|
}
|
38
40
|
|
39
41
|
}
|
@@ -42,6 +44,10 @@
|
|
42
44
|
|
43
45
|
と纏まります.
|
44
46
|
|
47
|
+
そして, おそらく「もう一度じゃんけんから」となった場合は(3回勝負のカウントを上げずに再度じゃんけんをする為に) あっちむいてほいの while ループを抜けるため break を書かなくてはいけないと思うのですが, case 内では書けませんので, このように纏めたほうがよいのではと思います.
|
48
|
+
|
49
|
+
また, ご提示のコードの最後にある return 0 は削除しないと, 数字以外や範囲外の数値を入力等の場合に3回勝負のカウントが上がってしまいます.
|
50
|
+
|
45
51
|
|
46
52
|
|
47
53
|
モロモロ想像・修正すると, 以下の様になりました.
|
3
コード例追加
test
CHANGED
@@ -2,7 +2,45 @@
|
|
2
2
|
|
3
3
|
ご質問の件は, 条件を並べ過ぎてどの場合にどれが表示されるのかが分からなくなっているためと思います.
|
4
4
|
|
5
|
+
例えば ```switch(pry2) { ~ }``` の部分は
|
6
|
+
|
7
|
+
```java
|
8
|
+
|
9
|
+
if(pry2 < 0 || com2.length < pry2) {
|
10
|
+
|
11
|
+
System.out.println("範囲外の数字です。0~3で入力してね。");
|
12
|
+
|
13
|
+
} else {
|
14
|
+
|
5
|
-
|
15
|
+
System.out.println(com2[cpu2] + "(COM)と" + "(Player)" + com2[pry2] + "だね");
|
16
|
+
|
17
|
+
if (pry2 == cpu2) {
|
18
|
+
|
19
|
+
if(hantei == 1) {
|
20
|
+
|
21
|
+
System.out.println("あなたの勝ち!");
|
22
|
+
|
23
|
+
return 1;
|
24
|
+
|
25
|
+
}else if(hantei == 2) {
|
26
|
+
|
27
|
+
System.out.println("あなたの負け!");
|
28
|
+
|
29
|
+
return 0;
|
30
|
+
|
31
|
+
}
|
32
|
+
|
33
|
+
} else {
|
34
|
+
|
35
|
+
System.out.println("\nもう一度じゃんけんからだよ!");
|
36
|
+
|
37
|
+
}
|
38
|
+
|
39
|
+
}
|
40
|
+
|
41
|
+
```
|
42
|
+
|
43
|
+
と纏まります.
|
6
44
|
|
7
45
|
|
8
46
|
|
2
再修正(まだメッセージの流れが変ですが...)
test
CHANGED
@@ -72,6 +72,14 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
+
enum Settlement {
|
76
|
+
|
77
|
+
NOT_SETTLED, WON, LOST
|
78
|
+
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
|
75
83
|
public class test32 {
|
76
84
|
|
77
85
|
public static void main(String[] args) {
|
@@ -94,9 +102,15 @@
|
|
94
102
|
|
95
103
|
System.out.println("\n---- " + i + "回戦 ----");
|
96
104
|
|
105
|
+
Settlement settlement;
|
106
|
+
|
107
|
+
do {
|
108
|
+
|
97
|
-
|
109
|
+
settlement = あっちむいてホイ(player, computer, じゃんけん(player, computer));
|
98
|
-
|
110
|
+
|
99
|
-
i
|
111
|
+
} while(settlement == Settlement.NOT_SETTLED);
|
112
|
+
|
113
|
+
if(settlement == Settlement.WON) win++;
|
100
114
|
|
101
115
|
}
|
102
116
|
|
@@ -144,7 +158,7 @@
|
|
144
158
|
|
145
159
|
|
146
160
|
|
147
|
-
private static
|
161
|
+
private static Settlement あっちむいてホイ(Player player, Computer computer, boolean playerAttack) {
|
148
162
|
|
149
163
|
String[] dirStr = new String[] {"上", "下", "左", "右"};
|
150
164
|
|
@@ -162,7 +176,15 @@
|
|
162
176
|
|
163
177
|
|
164
178
|
|
179
|
+
if(pry != cpu) {
|
180
|
+
|
181
|
+
System.out.println("もう一度じゃんけんからだよ!");
|
182
|
+
|
183
|
+
return Settlement.NOT_SETTLED;
|
184
|
+
|
185
|
+
}
|
186
|
+
|
165
|
-
return printResult(playerAttack ?
|
187
|
+
return printResult(playerAttack) ? Settlement.WON : Settlement.LOST;
|
166
188
|
|
167
189
|
}
|
168
190
|
|
1
「あっちむいてほい」のルールを忘れてましたので修正
test
CHANGED
@@ -94,11 +94,7 @@
|
|
94
94
|
|
95
95
|
System.out.println("\n---- " + i + "回戦 ----");
|
96
96
|
|
97
|
-
|
97
|
+
if(あっちむいてホイ(player, computer, じゃんけん(player, computer))) win++;
|
98
|
-
|
99
|
-
boolean win2 = あっちむいてホイ(player, computer);
|
100
|
-
|
101
|
-
if(win1 && win2) win++;
|
102
98
|
|
103
99
|
if(i != game) System.out.println("\nもう一度じゃんけんからだよ!");
|
104
100
|
|
@@ -148,13 +144,13 @@
|
|
148
144
|
|
149
145
|
|
150
146
|
|
151
|
-
private static boolean あっちむいてホイ(Player player, Computer computer) {
|
147
|
+
private static boolean あっちむいてホイ(Player player, Computer computer, boolean playerAttack) {
|
152
148
|
|
153
149
|
String[] dirStr = new String[] {"上", "下", "左", "右"};
|
154
150
|
|
155
151
|
|
156
152
|
|
157
|
-
System.out.println("\n次はあっちむいてホイ!です\n数字で入力してね");
|
153
|
+
System.out.println("\n次はあっちむいてホイ!です\nあなたは"+(playerAttack?"攻撃側":"防御側")+"です\n数字で入力してね");
|
158
154
|
|
159
155
|
|
160
156
|
|
@@ -166,7 +162,7 @@
|
|
166
162
|
|
167
163
|
|
168
164
|
|
169
|
-
return printResult(pry != cpu);
|
165
|
+
return printResult(playerAttack ? pry == cpu : pry != cpu);
|
170
166
|
|
171
167
|
}
|
172
168
|
|