質問編集履歴

5

追加

2018/09/19 09:00

投稿

masanori-
masanori-

スコア9

test CHANGED
File without changes
test CHANGED
@@ -156,6 +156,168 @@
156
156
 
157
157
 
158
158
 
159
+
160
+
161
+
162
+
163
+
164
+
165
+ //S結果のメソッド/*
166
+
167
+ package janken;
168
+
169
+
170
+
171
+ import janken.Enums.S手;
172
+
173
+ import janken.Enums.S結果;
174
+
175
+
176
+
177
+ public class Janken {
178
+
179
+
180
+
181
+ /** Playerの手 */
182
+
183
+ private S手 playerHand;
184
+
185
+
186
+
187
+ /** CPUの手 */
188
+
189
+ private S手 cpuHand;
190
+
191
+
192
+
193
+ /**
194
+
195
+ * コンストラクタ
196
+
197
+ *
198
+
199
+ * Playerの手と、CPUの手をセット
200
+
201
+ * @param playerHand Playerの手
202
+
203
+ */
204
+
205
+ Janken(S手 value) {
206
+
207
+ this.playerHand = value;
208
+
209
+ this.cpuHand = this.getRandomHand();
210
+
211
+ }
212
+
213
+
214
+
215
+ /**
216
+
217
+ * 勝ち負け判定
218
+
219
+ *
220
+
221
+ * @return 結果
222
+
223
+ */
224
+
225
+ public S結果 judge() {
226
+
227
+
228
+
229
+ //勝ち
230
+
231
+ if((this.playerHand == S手.グー && this.cpuHand == S手.チョキ) ||
232
+
233
+ (this.playerHand == S手.チョキ && this.cpuHand == S手.パー) ||
234
+
235
+ (this.playerHand == S手.パー && this.cpuHand == S手.グー)) {
236
+
237
+ return S結果.勝ち;
238
+
239
+ }
240
+
241
+
242
+
243
+ //あいこ
244
+
245
+ if(this.playerHand == this.cpuHand) {
246
+
247
+ return S結果.あいこ;
248
+
249
+ }
250
+
251
+
252
+
253
+ //上記以外は負け
254
+
255
+ return S結果.負け;
256
+
257
+ }
258
+
259
+
260
+
261
+
262
+
263
+ /**
264
+
265
+ * PlayerとCPUの手を返却(表示用)
266
+
267
+ *
268
+
269
+ * @return PlayerとCPUの手を返却
270
+
271
+ */
272
+
273
+ public String getInputHand(){
274
+
275
+
276
+
277
+ return "Playerの手:" + this.playerHand + "、CPUの手:" + this.cpuHand;
278
+
279
+ }
280
+
281
+
282
+
283
+ /**
284
+
285
+ * ランダムの手を返却
286
+
287
+ *
288
+
289
+ * @return コンピューターの手
290
+
291
+ */
292
+
293
+ private S手 getRandomHand() {
294
+
295
+
296
+
297
+ // ランダムでグー、チョキ、パーを決定し返却
298
+
299
+ int hand = (int)(Math.random() * 3) + 1;
300
+
301
+ return S手.getEnum(hand);
302
+
303
+ }
304
+
305
+ }
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
159
321
  ```
160
322
 
161
323
 

4

文字修正

2018/09/19 09:00

投稿

masanori-
masanori-

スコア9

test CHANGED
File without changes
test CHANGED
@@ -58,31 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- 追加処理のソースコードを、定義の場所 ** boolean winFlag = true;**と、
62
61
 
63
- 「//勝ち負け判定」の
64
-
65
- **
66
-
67
- if(result == S結果.勝ち) {
68
-
69
- winFlag = true;
70
-
71
- }
72
-
73
-
74
-
75
- if(winFlag =true && S結果.勝ち) {
76
-
77
- playerPt --;
78
-
79
- }
80
-
81
- **
82
-
83
-
84
-
85
- 場所(**はteratail上での目印でソースにはありません)に自分なりに加えてみましたが、コマンドプロンプトでコンパイルすると「 && のオペランド型が不正です」と出ました。
86
62
 
87
63
 
88
64
 
@@ -122,37 +98,31 @@
122
98
 
123
99
  ```
124
100
 
101
+
102
+
125
- public static void main(String[] args) {
103
+ int lastWinner = 0;
126
104
 
127
105
 
128
106
 
129
- S結果 result = null;
107
+ //もし、playerが「勝ち」ならlastWinner=1のフラグが立つ/*
130
108
 
131
- int playerPt = 0;
109
+ if(result == S結果.勝ち) {
132
110
 
133
- int cpuPt = 0;
111
+ lastWinner = 1;
134
112
 
113
+ }
114
+
115
+
116
+
117
+ //もし、1のフラグかつ勝負の結果が勝ちならplayerは-1pt、そしてフラグをリセット/*
118
+
135
- ** boolean winFlag = true;**
119
+ if(lastWinner == 1 && S結果.勝ち) {
136
120
 
137
121
 
138
122
 
139
- //勝敗が決まるまで実施
123
+ playerPt--;
140
124
 
141
- while(true) {
142
-
143
-
144
-
145
- // Playerの手を取得
146
-
147
- S手 playerHand = readPlayerHand();
148
-
149
- if(playerHand == null) {
125
+ lastWinner = 0;
150
-
151
-
152
-
153
- // 未入力で終了
154
-
155
- return;
156
126
 
157
127
 
158
128
 
@@ -160,99 +130,29 @@
160
130
 
161
131
 
162
132
 
163
- // 手をセット
133
+ //もし、playerが「負け」ならlastWinner=2のフラグが立つ/*
164
134
 
165
- Janken janken = new Janken(playerHand);
135
+ if(result == S結果.負け) {
166
136
 
167
-
168
-
169
- // 手を表示
170
-
171
- System.out.println(" → " + janken.getInputHand());
172
-
173
-
174
-
175
- // 勝ち負け判定
176
-
177
- result = janken.judge();
178
-
179
-
180
-
181
- if(result == S結果.あいこ) {
182
-
183
-
184
-
185
- System.out.println("あいこでしょ!");
186
-
187
- } else if (result == S結果.勝ち) {
188
-
189
-
190
-
191
- System.out.println("playerの勝ち");
192
-
193
- playerPt ++;
137
+ lastWinner = 2;
194
-
195
-
196
-
197
- } else if (result == S結果.負け) {
198
-
199
-
200
-
201
- System.out.println("cpuの勝ち");
202
-
203
- cpuPt ++;
204
-
205
-
206
-
207
- } else {
208
-
209
- break;
210
-
211
-
212
-
213
- }
214
-
215
- **
216
-
217
- if(result == S結果.勝ち) {
218
-
219
- winFlag = true;
220
138
 
221
139
  }
222
140
 
223
141
 
224
142
 
225
- if(winFlag =true && S結果.勝ち) {
143
+ //もし、2のフラグで、かつ勝負の結果が負けならCPUは-1pt、そしてフラグをリセット/*
226
144
 
227
- playerPt --;
145
+ if(lastWinner == 2 && S結果.負け) {
228
146
 
229
- }
147
+
230
148
 
231
- **
149
+ cpuPt--;
232
150
 
233
- System.out.println("player" + playerPt + "対cpu" + cpuPt);
234
-
235
- if(playerPt >= 3) {
151
+ lastWinner = 0;
236
-
237
-
238
-
239
- System.out.println("playerの・・・");
240
-
241
- break;
242
-
243
- } else if(cpuPt >= 3) {
244
-
245
-
246
-
247
- System.out.println("playerの・・・");
248
-
249
- break;
250
152
 
251
153
 
252
154
 
253
155
  }
254
-
255
- }
256
156
 
257
157
 
258
158
 

3

文法の修正

2018/09/19 08:16

投稿

masanori-
masanori-

スコア9

test CHANGED
File without changes
test CHANGED
@@ -18,6 +18,92 @@
18
18
 
19
19
 
20
20
 
21
+
22
+
23
+ ■■■追加詳細■■■
24
+
25
+
26
+
27
+
28
+
29
+ 「2連続で勝利した場合、同時にその方に-1pt」
30
+
31
+ 例えば、
32
+
33
+ 1回戦目 playerが勝ち:CPUが負け スコア【1pt:0pt】
34
+
35
+ 2回戦目playerが勝ち:CPUが負け スコア【2pt:0pt】
36
+
37
+ しかしここでplayerが2連勝なので、-1pt スコア【1pt:0pt】
38
+
39
+ 3回戦目
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+ というような流れの処理となるようにと作りたいです。
48
+
49
+
50
+
51
+ 2連勝して-1ptの処理が発生した後は、連勝のカウントをリセットし、続きを始めます。
52
+
53
+ 2連勝後にまた勝っても何もなくその後2連勝するとまた-1ptされ、その場合は一旦スコアが「player 3pt: CPU 0pt」となりますが、表示されるスコアは「player 2pt: CPU 0pt」となるようにしたいと考えております。
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ 追加処理のソースコードを、定義の場所 ** boolean winFlag = true;**と、
62
+
63
+ 「//勝ち負け判定」の
64
+
65
+ **
66
+
67
+ if(result == S結果.勝ち) {
68
+
69
+ winFlag = true;
70
+
71
+ }
72
+
73
+
74
+
75
+ if(winFlag =true && S結果.勝ち) {
76
+
77
+ playerPt --;
78
+
79
+ }
80
+
81
+ **
82
+
83
+
84
+
85
+ 場所(**はteratail上での目印でソースにはありません)に自分なりに加えてみましたが、コマンドプロンプトでコンパイルすると「 && のオペランド型が不正です」と出ました。
86
+
87
+
88
+
89
+ 根本的に間違ったコードを書かいているのか、ベースはあっているのか、要素が足りないなどを教えて頂ければと存じます。
90
+
91
+
92
+
93
+
94
+
95
+ ■■■■■■■■■■■■■■
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
21
107
  なにぶん、初心者なもので質問の仕方に不備があったり、もっと詳しくといったことでも出来ればコメント頂ければと思います。
22
108
 
23
109
 
@@ -34,8 +120,6 @@
34
120
 
35
121
  ### 該当のソースコード
36
122
 
37
-
38
-
39
123
  ```
40
124
 
41
125
  public static void main(String[] args) {
@@ -48,6 +132,8 @@
48
132
 
49
133
  int cpuPt = 0;
50
134
 
135
+ ** boolean winFlag = true;**
136
+
51
137
 
52
138
 
53
139
  //勝敗が決まるまで実施
@@ -126,7 +212,23 @@
126
212
 
127
213
  }
128
214
 
129
-
215
+ **
216
+
217
+ if(result == S結果.勝ち) {
218
+
219
+ winFlag = true;
220
+
221
+ }
222
+
223
+
224
+
225
+ if(winFlag =true && S結果.勝ち) {
226
+
227
+ playerPt --;
228
+
229
+ }
230
+
231
+ **
130
232
 
131
233
  System.out.println("player" + playerPt + "対cpu" + cpuPt);
132
234
 
@@ -154,20 +256,10 @@
154
256
 
155
257
 
156
258
 
157
- // 結果を表示
158
-
159
- outputResult(result);
160
-
161
- }
162
-
163
259
  ```
164
260
 
165
261
 
166
262
 
167
-
168
-
169
-
170
-
171
263
  ### 補足情報(FW/ツールのバージョンなど)
172
264
 
173
265
 

2

文法の修正

2018/09/19 04:06

投稿

masanori-
masanori-

スコア9

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,15 @@
10
10
 
11
11
  下記はメインのメソッドだけを貼り付けさせて頂きました。
12
12
 
13
- //勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
13
+ //勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、
14
+
15
+ ifを使うのか、switchを使うのかといった部分や条件式の中身はどのように打ち込めばいいのか分かりません。
16
+
17
+
18
+
19
+
20
+
21
+ なにぶん、初心者なもので質問の仕方に不備があったり、もっと詳しくといったことでも出来ればコメント頂ければと思います。
14
22
 
15
23
 
16
24
 

1

文法の修正

2018/09/18 08:10

投稿

masanori-
masanori-

スコア9

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  下記はメインのメソッドだけを貼り付けさせて頂きました。
12
12
 
13
- //勝ち負け判定のどこかに「2連続で勝利した場合、その方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
13
+ //勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
14
14
 
15
15
 
16
16