質問編集履歴
5
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -77,6 +77,87 @@
|
|
77
77
|
|
78
78
|
}
|
79
79
|
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
//S結果のメソッド/*
|
84
|
+
package janken;
|
85
|
+
|
86
|
+
import janken.Enums.S手;
|
87
|
+
import janken.Enums.S結果;
|
88
|
+
|
89
|
+
public class Janken {
|
90
|
+
|
91
|
+
/** Playerの手 */
|
92
|
+
private S手 playerHand;
|
93
|
+
|
94
|
+
/** CPUの手 */
|
95
|
+
private S手 cpuHand;
|
96
|
+
|
97
|
+
/**
|
98
|
+
* コンストラクタ
|
99
|
+
*
|
100
|
+
* Playerの手と、CPUの手をセット
|
101
|
+
* @param playerHand Playerの手
|
102
|
+
*/
|
103
|
+
Janken(S手 value) {
|
104
|
+
this.playerHand = value;
|
105
|
+
this.cpuHand = this.getRandomHand();
|
106
|
+
}
|
107
|
+
|
108
|
+
/**
|
109
|
+
* 勝ち負け判定
|
110
|
+
*
|
111
|
+
* @return 結果
|
112
|
+
*/
|
113
|
+
public S結果 judge() {
|
114
|
+
|
115
|
+
//勝ち
|
116
|
+
if((this.playerHand == S手.グー && this.cpuHand == S手.チョキ) ||
|
117
|
+
(this.playerHand == S手.チョキ && this.cpuHand == S手.パー) ||
|
118
|
+
(this.playerHand == S手.パー && this.cpuHand == S手.グー)) {
|
119
|
+
return S結果.勝ち;
|
120
|
+
}
|
121
|
+
|
122
|
+
//あいこ
|
123
|
+
if(this.playerHand == this.cpuHand) {
|
124
|
+
return S結果.あいこ;
|
125
|
+
}
|
126
|
+
|
127
|
+
//上記以外は負け
|
128
|
+
return S結果.負け;
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
/**
|
133
|
+
* PlayerとCPUの手を返却(表示用)
|
134
|
+
*
|
135
|
+
* @return PlayerとCPUの手を返却
|
136
|
+
*/
|
137
|
+
public String getInputHand(){
|
138
|
+
|
139
|
+
return "Playerの手:" + this.playerHand + "、CPUの手:" + this.cpuHand;
|
140
|
+
}
|
141
|
+
|
142
|
+
/**
|
143
|
+
* ランダムの手を返却
|
144
|
+
*
|
145
|
+
* @return コンピューターの手
|
146
|
+
*/
|
147
|
+
private S手 getRandomHand() {
|
148
|
+
|
149
|
+
// ランダムでグー、チョキ、パーを決定し返却
|
150
|
+
int hand = (int)(Math.random() * 3) + 1;
|
151
|
+
return S手.getEnum(hand);
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
80
161
|
```
|
81
162
|
|
82
163
|
### 補足情報(FW/ツールのバージョンなど)
|
4
文字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,19 +28,7 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
追加処理のソースコードを、定義の場所 ** boolean winFlag = true;**と、
|
32
|
-
「//勝ち負け判定」の
|
33
|
-
**
|
34
|
-
if(result == S結果.勝ち) {
|
35
|
-
winFlag = true;
|
36
|
-
}
|
37
31
|
|
38
|
-
if(winFlag =true && S結果.勝ち) {
|
39
|
-
playerPt --;
|
40
|
-
}
|
41
|
-
**
|
42
|
-
|
43
|
-
場所(**はteratail上での目印でソースにはありません)に自分なりに加えてみましたが、コマンドプロンプトでコンパイルすると「 && のオペランド型が不正です」と出ました。
|
44
32
|
|
45
33
|
根本的に間違ったコードを書かいているのか、ベースはあっているのか、要素が足りないなどを教えて頂ければと存じます。
|
46
34
|
|
@@ -60,72 +48,34 @@
|
|
60
48
|
|
61
49
|
### 該当のソースコード
|
62
50
|
```
|
63
|
-
public static void main(String[] args) {
|
64
51
|
|
65
|
-
S結果 result = null;
|
66
|
-
|
52
|
+
int lastWinner = 0;
|
67
|
-
int cpuPt = 0;
|
68
|
-
** boolean winFlag = true;**
|
69
53
|
|
70
|
-
//勝敗が決まるまで実施
|
71
|
-
while(true) {
|
72
|
-
|
73
|
-
|
54
|
+
//もし、playerが「勝ち」ならlastWinner=1のフラグが立つ/*
|
74
|
-
S手 playerHand = readPlayerHand();
|
75
|
-
|
55
|
+
if(result == S結果.勝ち) {
|
76
|
-
|
77
|
-
|
56
|
+
lastWinner = 1;
|
78
|
-
return;
|
79
|
-
|
80
57
|
}
|
81
|
-
|
82
|
-
// 手をセット
|
83
|
-
Janken janken = new Janken(playerHand);
|
84
|
-
|
85
|
-
// 手を表示
|
86
|
-
System.out.println(" → " + janken.getInputHand());
|
87
|
-
|
88
|
-
// 勝ち負け判定
|
89
|
-
result = janken.judge();
|
90
58
|
|
59
|
+
//もし、1のフラグかつ勝負の結果が勝ちならplayerは-1pt、そしてフラグをリセット/*
|
91
|
-
if(
|
60
|
+
if(lastWinner == 1 && S結果.勝ち) {
|
92
61
|
|
93
|
-
|
62
|
+
playerPt--;
|
94
|
-
|
63
|
+
lastWinner = 0;
|
95
64
|
|
96
|
-
System.out.println("playerの勝ち");
|
97
|
-
playerPt ++;
|
98
|
-
|
99
|
-
} else if (result == S結果.負け) {
|
100
|
-
|
101
|
-
System.out.println("cpuの勝ち");
|
102
|
-
cpuPt ++;
|
103
|
-
|
104
|
-
} else {
|
105
|
-
break;
|
106
|
-
|
107
65
|
}
|
108
|
-
**
|
109
|
-
if(result == S結果.勝ち) {
|
110
|
-
winFlag = true;
|
111
|
-
}
|
112
66
|
|
67
|
+
//もし、playerが「負け」ならlastWinner=2のフラグが立つ/*
|
113
|
-
if(
|
68
|
+
if(result == S結果.負け) {
|
114
|
-
|
69
|
+
lastWinner = 2;
|
115
70
|
}
|
116
|
-
**
|
117
|
-
System.out.println("player" + playerPt + "対cpu" + cpuPt);
|
118
|
-
if(playerPt >= 3) {
|
119
71
|
|
120
|
-
|
72
|
+
//もし、2のフラグで、かつ勝負の結果が負けならCPUは-1pt、そしてフラグをリセット/*
|
121
|
-
break;
|
122
|
-
|
73
|
+
if(lastWinner == 2 && S結果.負け) {
|
74
|
+
|
75
|
+
cpuPt--;
|
76
|
+
lastWinner = 0;
|
123
77
|
|
124
|
-
System.out.println("playerの・・・");
|
125
|
-
break;
|
126
|
-
|
127
78
|
}
|
128
|
-
}
|
129
79
|
|
130
80
|
```
|
131
81
|
|
3
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,6 +8,49 @@
|
|
8
8
|
ifを使うのか、switchを使うのかといった部分や条件式の中身はどのように打ち込めばいいのか分かりません。
|
9
9
|
|
10
10
|
|
11
|
+
|
12
|
+
■■■追加詳細■■■
|
13
|
+
|
14
|
+
|
15
|
+
「2連続で勝利した場合、同時にその方に-1pt」
|
16
|
+
例えば、
|
17
|
+
1回戦目 playerが勝ち:CPUが負け スコア【1pt:0pt】
|
18
|
+
2回戦目playerが勝ち:CPUが負け スコア【2pt:0pt】
|
19
|
+
しかしここでplayerが2連勝なので、-1pt スコア【1pt:0pt】
|
20
|
+
3回戦目
|
21
|
+
・
|
22
|
+
・
|
23
|
+
・
|
24
|
+
というような流れの処理となるようにと作りたいです。
|
25
|
+
|
26
|
+
2連勝して-1ptの処理が発生した後は、連勝のカウントをリセットし、続きを始めます。
|
27
|
+
2連勝後にまた勝っても何もなくその後2連勝するとまた-1ptされ、その場合は一旦スコアが「player 3pt: CPU 0pt」となりますが、表示されるスコアは「player 2pt: CPU 0pt」となるようにしたいと考えております。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
追加処理のソースコードを、定義の場所 ** boolean winFlag = true;**と、
|
32
|
+
「//勝ち負け判定」の
|
33
|
+
**
|
34
|
+
if(result == S結果.勝ち) {
|
35
|
+
winFlag = true;
|
36
|
+
}
|
37
|
+
|
38
|
+
if(winFlag =true && S結果.勝ち) {
|
39
|
+
playerPt --;
|
40
|
+
}
|
41
|
+
**
|
42
|
+
|
43
|
+
場所(**はteratail上での目印でソースにはありません)に自分なりに加えてみましたが、コマンドプロンプトでコンパイルすると「 && のオペランド型が不正です」と出ました。
|
44
|
+
|
45
|
+
根本的に間違ったコードを書かいているのか、ベースはあっているのか、要素が足りないなどを教えて頂ければと存じます。
|
46
|
+
|
47
|
+
|
48
|
+
■■■■■■■■■■■■■■
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
11
54
|
なにぶん、初心者なもので質問の仕方に不備があったり、もっと詳しくといったことでも出来ればコメント頂ければと思います。
|
12
55
|
|
13
56
|
|
@@ -16,13 +59,13 @@
|
|
16
59
|
|
17
60
|
|
18
61
|
### 該当のソースコード
|
19
|
-
|
20
62
|
```
|
21
63
|
public static void main(String[] args) {
|
22
64
|
|
23
65
|
S結果 result = null;
|
24
66
|
int playerPt = 0;
|
25
67
|
int cpuPt = 0;
|
68
|
+
** boolean winFlag = true;**
|
26
69
|
|
27
70
|
//勝敗が決まるまで実施
|
28
71
|
while(true) {
|
@@ -62,7 +105,15 @@
|
|
62
105
|
break;
|
63
106
|
|
64
107
|
}
|
108
|
+
**
|
109
|
+
if(result == S結果.勝ち) {
|
110
|
+
winFlag = true;
|
111
|
+
}
|
65
112
|
|
113
|
+
if(winFlag =true && S結果.勝ち) {
|
114
|
+
playerPt --;
|
115
|
+
}
|
116
|
+
**
|
66
117
|
System.out.println("player" + playerPt + "対cpu" + cpuPt);
|
67
118
|
if(playerPt >= 3) {
|
68
119
|
|
@@ -76,13 +127,8 @@
|
|
76
127
|
}
|
77
128
|
}
|
78
129
|
|
79
|
-
// 結果を表示
|
80
|
-
outputResult(result);
|
81
|
-
}
|
82
130
|
```
|
83
131
|
|
84
|
-
|
85
|
-
|
86
132
|
### 補足情報(FW/ツールのバージョンなど)
|
87
133
|
|
88
134
|
エディタはVSCodeを使用しています。
|
2
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,9 +4,13 @@
|
|
4
4
|
上記の内容の動作は完了しており、付け加える形として「2連続で勝利した場合、その方に-1pt」という処理を加えたいと考えております。
|
5
5
|
|
6
6
|
下記はメインのメソッドだけを貼り付けさせて頂きました。
|
7
|
-
//勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、
|
7
|
+
//勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、
|
8
|
+
ifを使うのか、switchを使うのかといった部分や条件式の中身はどのように打ち込めばいいのか分かりません。
|
8
9
|
|
9
10
|
|
11
|
+
なにぶん、初心者なもので質問の仕方に不備があったり、もっと詳しくといったことでも出来ればコメント頂ければと思います。
|
12
|
+
|
13
|
+
|
10
14
|
どなたかよろしければ、回答をお願い致します。
|
11
15
|
|
12
16
|
|
1
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
上記の内容の動作は完了しており、付け加える形として「2連続で勝利した場合、その方に-1pt」という処理を加えたいと考えております。
|
5
5
|
|
6
6
|
下記はメインのメソッドだけを貼り付けさせて頂きました。
|
7
|
-
//勝ち負け判定のどこかに「2連続で勝利した場合、その方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
|
7
|
+
//勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
|
8
8
|
|
9
9
|
|
10
10
|
どなたかよろしければ、回答をお願い致します。
|