Deck.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.company;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.Random;
  5. /**
  6. * Класс реализующий колоду
  7. */
  8. public class Deck {
  9. public final int CARD_COUNT = 52;
  10. public Card Cards[] = new Card[CARD_COUNT];
  11. Map<Integer, String> CardName = new HashMap<>();
  12. /**
  13. * Конструктор создает колоду карт
  14. */
  15. public Deck() {
  16. for (int i = 0; i < CARD_COUNT; i++) {
  17. Cards[i] = new Card();
  18. }
  19. Build();
  20. CardName.put(2, "2");
  21. CardName.put(3, "3");
  22. CardName.put(4, "4");
  23. CardName.put(5, "5");
  24. CardName.put(6, "6");
  25. CardName.put(7, "7");
  26. CardName.put(8, "8");
  27. CardName.put(9, "9");
  28. CardName.put(10, "10");
  29. CardName.put(11, "J");
  30. CardName.put(12, "Q");
  31. CardName.put(13, "K");
  32. CardName.put(14, "A");
  33. }
  34. /**
  35. * Метод генерирует колоду
  36. */
  37. public void Build() {
  38. // Количество различных номиналов (для цикла от 2 до 14 включительно)
  39. int denominationCount = (CARD_COUNT / 4) + 2;
  40. // Счетчик всех карт (для прохода по массиву cards)
  41. int cardCounter = 0;
  42. // Цикл foreach (пройти по каджой масти)
  43. for (Lear.NAME lear: Lear.NAME.values()) {
  44. // Цикл по номиналам (от 2 до 14 включительно)
  45. for (int j = 2; j < denominationCount; j++) {
  46. // Записать текущую масть в карту с индексом cardCounter
  47. Cards[cardCounter].Lear = lear;
  48. // Записать текущий номинал в карту с индексом cardCounter
  49. // и увеличить счетчик
  50. Cards[cardCounter++].setDenomination(j);
  51. }
  52. }
  53. }
  54. }