回答編集履歴
4
問題と思われる記述を追加
answer
CHANGED
@@ -16,10 +16,13 @@
|
|
16
16
|
}
|
17
17
|
} else {
|
18
18
|
System.out.println("\nもう一度じゃんけんからだよ!");
|
19
|
+
break; //これが必要では?
|
19
20
|
}
|
20
21
|
}
|
21
22
|
```
|
22
23
|
と纏まります.
|
24
|
+
そして, おそらく「もう一度じゃんけんから」となった場合は(3回勝負のカウントを上げずに再度じゃんけんをする為に) あっちむいてほいの while ループを抜けるため break を書かなくてはいけないと思うのですが, case 内では書けませんので, このように纏めたほうがよいのではと思います.
|
25
|
+
また, ご提示のコードの最後にある return 0 は削除しないと, 数字以外や範囲外の数値を入力等の場合に3回勝負のカウントが上がってしまいます.
|
23
26
|
|
24
27
|
モロモロ想像・修正すると, 以下の様になりました.
|
25
28
|
(遊びで日本語メソッド名を使いました. 問題ありましたらテキトウな英文字にしてください.)
|
3
コード例追加
answer
CHANGED
@@ -1,6 +1,25 @@
|
|
1
1
|
まず, 長すぎです.
|
2
2
|
ご質問の件は, 条件を並べ過ぎてどの場合にどれが表示されるのかが分からなくなっているためと思います.
|
3
|
+
例えば ```switch(pry2) { ~ }``` の部分は
|
4
|
+
```java
|
5
|
+
if(pry2 < 0 || com2.length < pry2) {
|
6
|
+
System.out.println("範囲外の数字です。0~3で入力してね。");
|
7
|
+
} else {
|
3
|
-
|
8
|
+
System.out.println(com2[cpu2] + "(COM)と" + "(Player)" + com2[pry2] + "だね");
|
9
|
+
if (pry2 == cpu2) {
|
10
|
+
if(hantei == 1) {
|
11
|
+
System.out.println("あなたの勝ち!");
|
12
|
+
return 1;
|
13
|
+
}else if(hantei == 2) {
|
14
|
+
System.out.println("あなたの負け!");
|
15
|
+
return 0;
|
16
|
+
}
|
17
|
+
} else {
|
18
|
+
System.out.println("\nもう一度じゃんけんからだよ!");
|
19
|
+
}
|
20
|
+
}
|
21
|
+
```
|
22
|
+
と纏まります.
|
4
23
|
|
5
24
|
モロモロ想像・修正すると, 以下の様になりました.
|
6
25
|
(遊びで日本語メソッド名を使いました. 問題ありましたらテキトウな英文字にしてください.)
|
2
再修正(まだメッセージの流れが変ですが...)
answer
CHANGED
@@ -35,6 +35,10 @@
|
|
35
35
|
}
|
36
36
|
}
|
37
37
|
|
38
|
+
enum Settlement {
|
39
|
+
NOT_SETTLED, WON, LOST
|
40
|
+
}
|
41
|
+
|
38
42
|
public class test32 {
|
39
43
|
public static void main(String[] args) {
|
40
44
|
Player player = new Player();
|
@@ -46,8 +50,11 @@
|
|
46
50
|
|
47
51
|
for(int i=1; i<=game; i++) {
|
48
52
|
System.out.println("\n---- " + i + "回戦 ----");
|
53
|
+
Settlement settlement;
|
54
|
+
do {
|
49
|
-
|
55
|
+
settlement = あっちむいてホイ(player, computer, じゃんけん(player, computer));
|
50
|
-
|
56
|
+
} while(settlement == Settlement.NOT_SETTLED);
|
57
|
+
if(settlement == Settlement.WON) win++;
|
51
58
|
}
|
52
59
|
|
53
60
|
System.out.println("\n---- 終了 ----");
|
@@ -71,7 +78,7 @@
|
|
71
78
|
}
|
72
79
|
}
|
73
80
|
|
74
|
-
private static
|
81
|
+
private static Settlement あっちむいてホイ(Player player, Computer computer, boolean playerAttack) {
|
75
82
|
String[] dirStr = new String[] {"上", "下", "左", "右"};
|
76
83
|
|
77
84
|
System.out.println("\n次はあっちむいてホイ!です\nあなたは"+(playerAttack?"攻撃側":"防御側")+"です\n数字で入力してね");
|
@@ -80,7 +87,11 @@
|
|
80
87
|
int cpu = computer.select(dirStr);
|
81
88
|
System.out.println(dirStr[cpu] + "(COM)と" + "(Player)" + dirStr[pry] +"だね");
|
82
89
|
|
90
|
+
if(pry != cpu) {
|
91
|
+
System.out.println("もう一度じゃんけんからだよ!");
|
92
|
+
return Settlement.NOT_SETTLED;
|
93
|
+
}
|
83
|
-
return printResult(playerAttack ?
|
94
|
+
return printResult(playerAttack) ? Settlement.WON : Settlement.LOST;
|
84
95
|
}
|
85
96
|
|
86
97
|
private static boolean printResult(boolean result) {
|
1
「あっちむいてほい」のルールを忘れてましたので修正
answer
CHANGED
@@ -46,9 +46,7 @@
|
|
46
46
|
|
47
47
|
for(int i=1; i<=game; i++) {
|
48
48
|
System.out.println("\n---- " + i + "回戦 ----");
|
49
|
-
|
49
|
+
if(あっちむいてホイ(player, computer, じゃんけん(player, computer))) win++;
|
50
|
-
boolean win2 = あっちむいてホイ(player, computer);
|
51
|
-
if(win1 && win2) win++;
|
52
50
|
if(i != game) System.out.println("\nもう一度じゃんけんからだよ!");
|
53
51
|
}
|
54
52
|
|
@@ -73,16 +71,16 @@
|
|
73
71
|
}
|
74
72
|
}
|
75
73
|
|
76
|
-
private static boolean あっちむいてホイ(Player player, Computer computer) {
|
74
|
+
private static boolean あっちむいてホイ(Player player, Computer computer, boolean playerAttack) {
|
77
75
|
String[] dirStr = new String[] {"上", "下", "左", "右"};
|
78
76
|
|
79
|
-
System.out.println("\n次はあっちむいてホイ!です\n数字で入力してね");
|
77
|
+
System.out.println("\n次はあっちむいてホイ!です\nあなたは"+(playerAttack?"攻撃側":"防御側")+"です\n数字で入力してね");
|
80
78
|
|
81
79
|
int pry = player.select(dirStr, "始めるよ! あっちむいてホイ : ");
|
82
80
|
int cpu = computer.select(dirStr);
|
83
81
|
System.out.println(dirStr[cpu] + "(COM)と" + "(Player)" + dirStr[pry] +"だね");
|
84
82
|
|
85
|
-
return printResult(pry != cpu);
|
83
|
+
return printResult(playerAttack ? pry == cpu : pry != cpu);
|
86
84
|
}
|
87
85
|
|
88
86
|
private static boolean printResult(boolean result) {
|