質問編集履歴

2

2枚目で21になった時の文を追加

2018/06/25 09:01

投稿

ueyama
ueyama

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,8 @@
1
+ ```ここに言語を入力
2
+
3
+ コード
4
+
1
- ### 前提・実現したいこと
5
+ ```### 前提・実現したいこと
2
6
 
3
7
 
4
8
 
@@ -34,23 +38,23 @@
34
38
 
35
39
  public class BlackJack{
36
40
 
37
- public static void main(String[] args){
41
+ public static void main(String[] args){
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
49
- ArrayList<Card> a=new ArrayList<>();
53
+ ArrayList<Card> a=new ArrayList<>();
50
-
54
+
51
- String[] b={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
55
+ String[] b={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
52
-
56
+
53
- String[] c={"ダイヤ","スペード","クラブ","ハート"};
57
+ String[] c={"ダイヤ","スペード","クラブ","ハート"};
54
58
 
55
59
 
56
60
 
@@ -58,11 +62,11 @@
58
62
 
59
63
  for(int i=1;i<=4;i++){
60
64
 
61
- for(int j=1;j<=13;j++){
65
+ for(int j=1;j<=13;j++){
62
-
66
+
63
- a.add(new Card(j,c[i-1],b[j-1]));
67
+ a.add(new Card(j,c[i-1],b[j-1]));
64
-
68
+
65
- }
69
+ }
66
70
 
67
71
  }
68
72
 
@@ -72,8 +76,6 @@
72
76
 
73
77
  // 俺にカード一枚目
74
78
 
75
- // System.out.println("1回目");
76
-
77
79
  Ore = ore(a,Ore);
78
80
 
79
81
 
@@ -88,27 +90,27 @@
88
90
 
89
91
  if(a.get(0).cardnumber.equals("J")||a.get(0).cardnumber.equals("Q")||a.get(0).cardnumber.equals("K")){
90
92
 
91
- Ai+=10;
93
+ Ai+=10;
92
94
 
93
95
  }else if(a.get(0).cardnumber.equals("A")){
94
96
 
95
97
 
96
98
 
97
- if(Ai<=10){
99
+ if(Ai<=10){
98
-
100
+
99
- Ai+=11;
101
+ Ai+=11;
100
-
102
+
101
- }else{
103
+ }else{
102
-
104
+
103
- Ai+=1;
105
+ Ai+=1;
104
-
106
+
105
- }
107
+ }
106
108
 
107
109
  }else{
108
110
 
109
- Ai+=a.get(0).number;
111
+ Ai+=a.get(0).number;
110
-
112
+
111
- }
113
+ }
112
114
 
113
115
  a.remove(0);
114
116
 
@@ -122,11 +124,23 @@
122
124
 
123
125
  Ore = ore(a,Ore);
124
126
 
125
-
127
+ // この時点で21になったら勝利
128
+
126
-
129
+ if(Ore==21){
130
+
127
-
131
+ System.out.println("BlackJack");
132
+
128
-
133
+ System.out.println("あなたの勝利です");
134
+
135
+ System.exit(0);
136
+
137
+ }
138
+
139
+
140
+
141
+
142
+
129
- //AIにカード二枚目
143
+ // AIにカード二枚目
130
144
 
131
145
  int aione=Ai;
132
146
 
@@ -138,31 +152,29 @@
138
152
 
139
153
  if(a.get(0).cardnumber.equals("J")||a.get(0).cardnumber.equals("Q")||a.get(0).cardnumber.equals("K")){
140
154
 
141
- Ai+=10;
155
+ Ai+=10;
142
156
 
143
157
  }else if(a.get(0).cardnumber.equals("A")){
144
158
 
145
159
 
146
160
 
147
- if(Ai<=10){
161
+ if(Ai<=10){
148
-
162
+
149
- Ai+=11;
163
+ Ai+=11;
150
-
164
+
151
- }else{
165
+ }else{
152
-
166
+
153
- Ai+=1;
167
+ Ai+=1;
154
-
168
+
155
- }
169
+ }
156
170
 
157
171
  }else{
158
172
 
159
- Ai+=a.get(0).number;
173
+ Ai+=a.get(0).number;
160
-
174
+
161
- }
175
+ }
162
-
163
-
164
-
165
- int aitwo=Ai;
176
+
177
+
166
178
 
167
179
  String aitwonamber=a.get(0).cardnumber;
168
180
 
@@ -172,11 +184,13 @@
172
184
 
173
185
  System.out.println("AIの現在の点数:"+aione+"+裏側のカード(不明です)");
174
186
 
187
+ // テスト用 AIに2枚目での合計値表示
188
+
175
189
  // System.out.println("AIの現在の点数:  ●"+Ai+"●");
176
190
 
177
191
 
178
192
 
179
- //俺のターン
193
+ // 俺のターン
180
194
 
181
195
  System.out.println("あなたの現在の点数:  ☆"+Ore+"☆です");
182
196
 
@@ -184,23 +198,23 @@
184
198
 
185
199
 
186
200
 
187
- String sc2=new java.util.Scanner(System.in).nextLine();
201
+ String sc2=new java.util.Scanner(System.in).nextLine();
188
-
189
-
190
-
202
+
203
+
204
+
191
- if(sc2.equals("1")){
205
+ if(sc2.equals("1")){
192
-
206
+
193
- Ore = ore(a,Ore);
207
+ Ore = ore(a,Ore);
194
-
208
+
195
- //AIのカード二枚目表示
209
+ //AIのカード二枚目表示
196
-
210
+
197
- System.out.println("AIが二枚目に引いたカードは"+aitwocard+"の"+aitwonamber+"でした");
211
+ System.out.println("AIが二枚目に引いたカードは"+aitwocard+"の"+aitwonamber+"でした");
198
212
 
199
213
  System.out.println("AIの現在の点数:  ●"+Ai+"●");
200
214
 
201
215
 
202
216
 
203
- }else {
217
+ }else {
204
218
 
205
219
  //AIのカード二枚目表示
206
220
 
@@ -208,7 +222,7 @@
208
222
 
209
223
  System.out.println("AIの現在の点数:  ●"+Ai+"●");
210
224
 
211
- }
225
+ }
212
226
 
213
227
 
214
228
 
@@ -228,9 +242,9 @@
228
242
 
229
243
 
230
244
 
231
- Collections.shuffle(a);
245
+ Collections.shuffle(a);
232
-
246
+
233
- System.out.println("AIが引いたカード:"+a.get(0).card+"の"+a.get(0).cardnumber);
247
+ System.out.println("AIが引いたカード:"+a.get(0).card+"の"+a.get(0).cardnumber);
234
248
 
235
249
 
236
250
 
@@ -246,15 +260,15 @@
246
260
 
247
261
  }else{
248
262
 
249
- Ai+=1;
263
+ Ai+=1;
250
-
264
+
251
- }
265
+ }
252
266
 
253
267
  }else{
254
268
 
255
- Ai+=a.get(0).number;
269
+ Ai+=a.get(0).number;
256
-
270
+
257
- }
271
+ }
258
272
 
259
273
  a.remove(0);
260
274
 
@@ -290,47 +304,47 @@
290
304
 
291
305
  // break もう引かない
292
306
 
293
- if(sc2.equals("1")&&Ore<21){
307
+ if(sc2.equals("1")&&Ore<21){
294
-
308
+
295
- System.out.println("引くか引かないか どちらにしますか? 引く:1 引かない: 2");
309
+ System.out.println("引くか引かないか どちらにしますか? 引く:1 引かない: 2");
296
-
310
+
297
- sc2=new java.util.Scanner(System.in).nextLine();
311
+ sc2=new java.util.Scanner(System.in).nextLine();
298
-
312
+
299
- if(sc2.equals("1")){
313
+ if(sc2.equals("1")){
300
-
314
+
301
- Ore = ore(a,Ore);
315
+ Ore = ore(a,Ore);
302
-
316
+
303
- if(Ore>=21) {
317
+ if(Ore>=21) {
304
-
318
+
305
- System.out.println("バーストしました");
319
+ System.out.println("バーストしました");
306
-
320
+
307
- break;
321
+ break;
308
-
322
+
309
- }
323
+ }
310
-
311
-
312
-
324
+
325
+
326
+
313
- }else {
327
+ }else {
314
-
328
+
315
- sc2="2";
329
+ sc2="2";
316
-
330
+
317
- }
331
+ }
318
-
332
+
319
- }
333
+ }
320
-
321
-
322
-
323
-
324
-
334
+
335
+
336
+
337
+
338
+
325
- // //AIのターン2回目以降
339
+ // AIのターン2回目以降
326
-
340
+
327
- if(16>=Ai) {
341
+ if(16>=Ai) {
328
-
329
-
330
-
342
+
343
+
344
+
331
- Collections.shuffle(a);
345
+ Collections.shuffle(a);
332
-
346
+
333
- System.out.println("AIが引いたカード:"+a.get(0).card+"の"+a.get(0).cardnumber);
347
+ System.out.println("AIが引いたカード:"+a.get(0).card+"の"+a.get(0).cardnumber);
334
348
 
335
349
 
336
350
 
@@ -346,15 +360,15 @@
346
360
 
347
361
  }else{
348
362
 
349
- Ai+=1;
363
+ Ai+=1;
350
-
364
+
351
- }
365
+ }
352
366
 
353
367
  }else{
354
368
 
355
- Ai+=a.get(0).number;
369
+ Ai+=a.get(0).number;
356
-
370
+
357
- }
371
+ }
358
372
 
359
373
  a.remove(0);
360
374
 
@@ -370,7 +384,7 @@
370
384
 
371
385
 
372
386
 
373
- //Jackの勝敗のif文です。
387
+ //ブラックジャック勝敗のif文です。
374
388
 
375
389
 
376
390
 
@@ -412,49 +426,51 @@
412
426
 
413
427
 
414
428
 
415
-
429
+ // J,Q,Kを10として扱う
416
430
 
417
431
  if(a.get(0).cardnumber.equals("J")||a.get(0).cardnumber.equals("Q")||a.get(0).cardnumber.equals("K")){
418
432
 
419
- Ore+=10;
433
+ Ore+=10;
434
+
435
+ // Aを1か11か選択
420
436
 
421
437
  }else if(a.get(0).cardnumber.equals("A")){
422
438
 
423
- System.out.println("1か11 どちらにしますか? 1:1 11: 11");
439
+ System.out.println("1か11 どちらにしますか? 1:1 11: 11");
424
-
425
-
426
-
440
+
441
+
442
+
427
- String sc=new java.util.Scanner(System.in).nextLine();
443
+ String sc=new java.util.Scanner(System.in).nextLine();
428
-
429
-
430
-
444
+
445
+
446
+
431
- if(sc.equals("1")){
447
+ if(sc.equals("1")){
432
-
448
+
433
- Ore+=1;
449
+ Ore+=1;
434
-
450
+
435
- }
451
+ }
436
-
437
-
438
-
452
+
453
+
454
+
439
- else if(sc.equals("11")){
455
+ else if(sc.equals("11")){
440
-
456
+
441
- Ore+=11;
457
+ Ore+=11;
442
-
458
+
443
- }else {
459
+ }else {
444
-
460
+
445
- Ore+=1;
461
+ Ore+=1;
446
-
462
+
447
- }
463
+ }
448
-
449
-
450
-
464
+
465
+
466
+
451
- }else{
467
+ }else{
452
-
468
+
453
- Ore+=a.get(0).number;
469
+ Ore+=a.get(0).number;
454
-
455
-
456
-
470
+
471
+
472
+
457
- }
473
+ }
458
474
 
459
475
 
460
476
 
@@ -468,7 +484,7 @@
468
484
 
469
485
  System.out.println("あなたの現在の点数:  ☆"+Ore+"☆");
470
486
 
471
- return Ore;
487
+ return Ore;
472
488
 
473
489
  }
474
490
 
@@ -480,28 +496,30 @@
480
496
 
481
497
  class Card{
482
498
 
483
- int number=0;
499
+ int number=0;
484
-
500
+
485
- String card="";
501
+ String card="";
486
-
502
+
487
- String cardnumber="";
503
+ String cardnumber="";
488
504
 
489
505
  Card(int a,String b,String c){
490
506
 
491
- number=a;
507
+ number=a;
492
-
508
+
493
- card=b;
509
+ card=b;
494
-
510
+
495
- cardnumber=c;
511
+ cardnumber=c;
496
512
 
497
513
  }
498
514
 
499
515
  }
500
516
 
501
-
517
+ コード
502
518
 
503
519
  ```
504
520
 
521
+ ```
522
+
505
523
  ### 試したこと
506
524
 
507
525
 

1

コードを見やすくしました

2018/06/25 09:00

投稿

ueyama
ueyama

スコア20

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- ここに質問の内容を詳しく書いてください。
5
+
6
6
 
7
7
  勉強を始めて1か月。JAVAでブラックジャックを作っていて、カードをAを引いた時に「1」か「11」にするかという選択をカードを引いたときにはできるのですが、2枚目以降カードを引いた時に、それまでにAを引いていたら、またAを「1」か「11」かにするかという選択肢を表示するにはどうすればいいのでしょうか。
8
8
 
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- import java.util.ArrayList;
27
+ ```import java.util.ArrayList;
28
28
 
29
29
  import java.util.Collections;
30
30
 
@@ -264,9 +264,11 @@
264
264
 
265
265
 
266
266
 
267
- // 自分、相手と交互に10回繰り返す
267
+ // 自分、相手と交互に9回繰り返す
268
+
268
-
269
+ // 最大9枚まで引けるため(A:4枚 2:4枚 3:3枚で合計11枚で21、最初に2枚配るので、残り9回)
270
+
269
- for (int turn=0; turn < 10; turn++ ){
271
+ for (int turn=0; turn < 9; turn++ ){
270
272
 
271
273
 
272
274
 
@@ -498,6 +500,8 @@
498
500
 
499
501
 
500
502
 
503
+ ```
504
+
501
505
  ### 試したこと
502
506
 
503
507