質問編集履歴

1

使おうとして使わなかったコードが別のクラスにあるのですが、それぐらいしか心当たりがないので載せます

2022/07/25 10:30

投稿

ngi
ngi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -259,3 +259,283 @@
259
259
  }
260
260
 
261
261
  ```
262
+
263
+ 使おうとして結局使わなかったコード
264
+ ```CardDeck.java
265
+
266
+ import java.util.ArrayList;
267
+ import java.util.Collections;
268
+ import java.util.List;
269
+
270
+ public class CardDeck {
271
+ private ArrayList<Card> cards = new ArrayList<Card>();
272
+
273
+ /**
274
+ * 空のカードデッキを生成する
275
+ */
276
+ public CardDeck() {
277
+ super();
278
+ }
279
+
280
+ /**
281
+ * フルデッキ(52枚)を作る
282
+ */
283
+ public void createFullDeck() {
284
+ for(int i=0; i<=3; i++) {
285
+ for(int j=1; j<=13; j++) {
286
+ Card c = new Card(i, j);
287
+ cards.add(c);
288
+ }
289
+ }
290
+ }
291
+
292
+ /**
293
+ * 空デッキをにする
294
+ */
295
+ public void clear() {
296
+ cards.clear();
297
+ }
298
+
299
+ /**
300
+ * デッキををシャッフルする
301
+ */
302
+ public void shuffle() {
303
+ Collections.shuffle(cards);
304
+ }
305
+
306
+ /**
307
+ * デッキの一番最後に,任意のカードcardを追加する
308
+ * @param card
309
+ * カード
310
+ */
311
+ public void addCard(Card card) {
312
+ cards.add(card);
313
+ }
314
+
315
+ /**
316
+ * デッキの i 番目に,任意のカードcardを追加する
317
+ *
318
+ * @param i
319
+ * 追加する場所
320
+ * @param card
321
+ *      カード
322
+ */
323
+ public void addCard(int i, Card card) {
324
+ cards.add(i-1, card);
325
+ }
326
+
327
+ /**
328
+ * デッキの一番上のカードを取る
329
+ *
330
+ * @return カード
331
+ */
332
+ public Card takeCard() {
333
+ Card c = cards.get(0);
334
+ cards.remove(0);
335
+ c.show();
336
+ return c;
337
+ }
338
+
339
+ /**
340
+ * デッキの i 番目から,カードを抜き取る
341
+ *
342
+ * @param i
343
+ * 抜き取る場所
344
+ * @return
345
+ *      カード
346
+ */
347
+ public Card takeCard(int i) {
348
+ Card c = cards.get(i-1);
349
+ cards.remove(i-1);
350
+ c.show();
351
+ return c;
352
+ }
353
+
354
+ /**
355
+ * デッキのi番目にあるカードを見る
356
+ *
357
+ * @param i
358
+ * 見る場所
359
+ * @return
360
+ *     カード
361
+ */
362
+ public Card seeCard(int i) {
363
+ Card c = cards.get(i-1);
364
+ System.out.println(i + "番目のカード:" + c.getString(c.getSuit(), c.getNumber()));
365
+ return c;
366
+ }
367
+
368
+ /**
369
+ * カードがデッキの何番目にあるかを調べる
370
+ * @param suit
371
+ * 絵柄 (0:スペード,1:ダイヤ,2:ハート,3:クラブ)
372
+ * @param number
373
+ *        数字 (1-13)
374
+ * @return カードの場所
375
+ */
376
+ public int searchCard(int suit, int number) {
377
+ Card c = new Card(suit, number);
378
+ return cards.indexOf(c) + 1;
379
+ }
380
+
381
+ /**
382
+ * 現在のデッキが空かどうか,判定する
383
+ * @return 空ならtrue,空でないならfalse
384
+ */
385
+ public boolean isEmpty() {
386
+ return cards.isEmpty();
387
+ }
388
+
389
+ /**
390
+ * 現在デッキにあるカード枚数を返す(
391
+ *
392
+ * @return デッキにあるカード枚数
393
+ */
394
+ public int size() {
395
+ return cards.size();
396
+ }
397
+
398
+ /**
399
+ * 現在のすべてのカードを画面に表示する
400
+ */
401
+ public void showAllCard() {
402
+ System.out.println("------------現在の山を表示します.-----------");
403
+ for(int i=1; i<=size(); i++) {
404
+ seeCard(i);
405
+ }
406
+ System.out.println("------------ここまで-----------");
407
+ }
408
+
409
+ /**
410
+ * 現在デッキにある全てのカードを返す
411
+ * @return 現在デッキにある全てのカード
412
+ */
413
+ public List<Card> getAllCards() {
414
+ return cards;
415
+ }
416
+ }
417
+ ```
418
+ ```Card
419
+ public class Card {
420
+ private int suit; // 絵柄 (0:スペード,1:ダイヤ,2:ハート,3:クラブ)
421
+ private int number; // 数字 (1-13)
422
+
423
+ /**
424
+ * 絵柄と数字を指定してカードを生成する
425
+ *
426
+ * @param suit
427
+ * 絵柄 (0:スペード,1:ダイヤ,2:ハート,3:クラブ)
428
+ * @param number
429
+ * 数字 (1-13)
430
+ */
431
+ public Card(int suit, int number) {
432
+ super();
433
+ this.suit = suit;
434
+ this.number = number;
435
+ }
436
+
437
+ /**
438
+ * そのカードの絵柄を取得する
439
+ *
440
+ * @return 絵柄 (0:スペード,1:ダイヤ,2:ハート,3:クラブ)
441
+ */
442
+ public int getSuit() {
443
+ return suit;
444
+ }
445
+
446
+ /**
447
+ * そのカードの数字を取得する
448
+ *
449
+ * @return 数字 (1-13)
450
+ */
451
+ public int getNumber() {
452
+ return number;
453
+ }
454
+
455
+ /**
456
+ * そのカードの整数表現を取得する
457
+ *
458
+ * @return 整数表現 (0-51)
459
+ */
460
+ public int toIndex() {
461
+ //自身の絵柄,数字で,staticメソッドから得る
462
+ return getIndex(getSuit(), getNumber());
463
+ }
464
+
465
+ /**
466
+ * そのカードの文字列表現を取得する
467
+ *
468
+ * @return 文字列表現 (スペードA, スペード2, ...)
469
+ */
470
+ public String toString() {
471
+ //自身の絵柄,数字で,staticメソッドから得る
472
+ return getString(getSuit(), getNumber());
473
+ }
474
+
475
+ /**
476
+ * そのカードの文字列表現を画面に表示する
477
+ */
478
+ public void show() {
479
+ System.out.println(toString());
480
+ }
481
+
482
+ /**
483
+ * 与えられた絵柄,数字から整数表現を計算して返す.すべてのカードで共通
484
+ *
485
+ * @param suit
486
+ * 絵柄 (0:スペード,1:ダイヤ,2:ハート,3:クラブ)
487
+ * @param number
488
+ * 数字 (1-13)
489
+ * @return カードの整数表現 (0-51)
490
+ */
491
+ public static int getIndex(int suit, int number) {
492
+ int index;
493
+ index = suit * 13 + number;
494
+
495
+ return index;
496
+
497
+ }
498
+
499
+ /**
500
+ * 与えられた絵柄,数字から文字列表現を決定して返す.すべてのカードで共通
501
+ *
502
+ * @param suit
503
+ * 絵柄 (0:スペード,1:ダイヤ,2:ハート,3:クラブ)
504
+ * @param number
505
+ * 数字 (1-13)
506
+ * @return カードの文字列表現 (スペードA, スペード2, ...)
507
+ */
508
+ public static String getString(int suit, int number) {
509
+ String suitStr, numStr; // 絵柄文字列,数字文字列
510
+
511
+ String[] sLabel = { "スペード", "ダイヤ", "ハート", "クラブ" };
512
+
513
+ if (2 <= number && number <= 10) {
514
+ // 通常の数字の場合
515
+ suitStr = sLabel[suit];
516
+ numStr = Integer.toString(number);
517
+ } else {
518
+ // 特別な数字表現の場合
519
+ suitStr = sLabel[suit];
520
+ switch (number) {
521
+ case 1:
522
+ numStr = "A";
523
+ break;
524
+ case 11:
525
+ numStr = "J";
526
+ break;
527
+ case 12:
528
+ numStr = "Q";
529
+ break;
530
+ case 13:
531
+ numStr = "K";
532
+ break;
533
+ default:
534
+ numStr = "存在しないカード";
535
+ }
536
+ }
537
+ // 絵柄文字列と数字文字列を連結して返す
538
+ return suitStr + numStr;
539
+ }
540
+ }
541
+ ```