Класс колода карт - C#

Узнай цену своей работы

Формулировка задачи:

Здраствуйте!Люди добрые помогите пожалуйста вообще не могу в ехать в тему "классы"=( вообщем вот : это не предлагать класс должен, как правило, содержать следующие эле*менты: скрытые поля, конструкторы с параметрами и без параметров, методы;свойства, индексаторы; перегруженные операции. Функциональные элементы класса должны обеспечивать непротиворечивый, полный, минимальный и удобный интер*фейс класса. При возникновении ошибок должны выбрасываться исключения. В программе должна выполняться проверка всех разработанных элементов класса.

и само задание описать класс "Колода карт", включающий в себя закрытый массив элементов класса "карта". В карте хранятся масть и номер. Обеспечить возможность вывода карты по номеру, вывода всех карт, перемешивания колоды и выдачи всех карт из колоды по одиночке и по 6 штук в случайном порядке!

Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace sstud
  5. { // Общий закрытый класс Suit (масть карты)
  6. public sealed class Suit
  7. {
  8. // Статически определяет все допустимые значения масти
  9. public static readonly Suit DIAMONDS = new Suit((char) 4); // ♦
  10. public static readonly Suit HEARTS = new Suit((char) 3); //♥
  11. public static readonly Suit SPADES = new Suit((char) 6); //в™*
  12. public static readonly Suit CLUBS = new Suit((char) 5); //в™Ј
  13. // Помогает выполнить итерации по перечислимым значениям
  14. public static readonly Suit[ ] SUIT = new Suit[ ]{DIAMONDS, HEARTS, SPADES, CLUBS};
  15. // Переменная экземпляра display для хранения отображаемого значения
  16. private readonly char display;
  17. // He позволить создавать экземпляры вне объектов
  18. private Suit(char display) // конструктор
  19. {
  20. this.display = display;
  21. }
  22. // ToString() – переопределяющий возвратить значение масти
  23. public override System.String ToString() // ToString() – м-д класса String
  24. {
  25. return System.Convert.ToString(display);
  26. }
  27. }
  28.  
  29. /*****************************************************************************************************/
  30. // Общий закрытый класс Rank (достоинство карты
  31. public sealed class Rank
  32. {
  33. public static readonly Rank SIX = new Rank(6, "6");
  34. public static readonly Rank SEVEN = new Rank(7, "7");
  35. public static readonly Rank EIGHT = new Rank(8, "8");
  36. public static readonly Rank NINE = new Rank(9, "9");
  37. public static readonly Rank TEN = new Rank(10, "10");
  38. public static readonly Rank JACK = new Rank(11, "J"); // валет
  39. public static readonly Rank QUEEN = new Rank(12, "Q"); // дама
  40. public static readonly Rank KING = new Rank(13, "K"); // король
  41. public static readonly Rank ACE = new Rank(14, "A"); // туз
  42. // Общий статический Rank (достоинство карты)
  43. public static readonly Rank[ ] RANK = new Rank[ ]{ SIX, SEVEN,
  44. EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE};
  45. private readonly int rank;
  46. // Переменная экземпляра rank для хранения отображаемого значения
  47. private System.String display;
  48. private Rank(int rank, System.String display) // конструктор
  49. {
  50. this.rank = rank;
  51. this.display = display;
  52. }
  53. public int getRank() // возврат достоинства карты
  54. {
  55. return rank;
  56. }
  57. // ToString() – переопределяющий
  58. public override System.String ToString()
  59. {
  60. return display;
  61. }
  62. }
  63. /*****************************************************************************************************/
  64. public class Card // Листинг 1с
  65. { private Rank rank;
  66. private Suit suit;
  67. /* создание новой карты - при этом используются только те константы,
  68. которые были инициализированы */
  69. public Card(Suit suit, Rank rank) // конструктор – создается карта
  70. {
  71. this.suit = suit;
  72. this.rank = rank;
  73. }
  74. virtual public Suit Suit // свойство – получить значение масти карты
  75. {
  76. get { return suit; }
  77. }
  78. virtual public Rank Rank // свойство – получить значение достоинства карты
  79. {
  80. get { return rank; }
  81. }
  82. public virtual System.String display() // строковое представление карты
  83. {
  84. return rank.ToString() + suit.ToString();
  85. }
  86. }
  87. /*****************************************************************************************************/
  88. public class Deck
  89. {
  90. private System.Collections.ArrayList deck; // динамический массив
  91. public Deck()
  92. {
  93. buildCards();
  94. }
  95. public virtual Card get_Renamed(int index)
  96. {
  97. if (index < deck.Count) // Count – это свойство класса ArrayList
  98. { // deck[index] – это элемент массива
  99. return (Card) deck[index];
  100. }
  101. return null;
  102. }
  103. public virtual void replace(int index, Card card) // перестановка карт
  104. {
  105. deck[index] = card;
  106. }
  107. public virtual int size()
  108. {
  109. return deck.Count; // Count – это свойство класса ArrayList
  110. }
  111. public virtual Card removeFromFront() // метод – извлечение карты
  112. {
  113. if (deck.Count > 0) // Count – это свойство класса ArrayList
  114. {
  115. System.Object tempObject;
  116. tempObject = deck[0];
  117. deck.RemoveAt(0); // RemoveAt – это м-д класса ArrayList
  118. Card card = (Card) tempObject;
  119. return card;
  120. }
  121. return null;
  122. }
  123. public virtual void returnToBack(Card card) // метод – возврат карты
  124. {
  125. deck.Add(card); // Add – это м-д класса ArrayList
  126. }
  127. private void buildCards()
  128. { // создание колоды карт
  129. // объект deck класса ArrayList()- динамический массив
  130. deck = new System.Collections.ArrayList();
  131. for (int i = 0; i < Suit.SUIT.Length; i++)
  132. {
  133. for (int j = 0; j < Rank.RANK.Length; j++)
  134. { // Add – это м-д класса ArrayList
  135. deck.Add(new Card(Suit.SUIT[i], Rank.RANK[j]));
  136. }
  137. }
  138. }
  139. }
  140. /*****************************************************************************************************/
  141. public class Dealer //Листинг 3а
  142. {
  143. private Deck deck; // прямой доступ к колоде закрыт
  144. public Dealer(Deck d)
  145. {
  146. deck = d;
  147. }
  148. public virtual void shuffle() // этот метод перетасовывает карты
  149. {
  150. // расположить карты случайным образом
  151. int num_cards = deck.size();
  152. for (int i = 0; i < num_cards; i++)
  153. { // NextDouble() – м-д класса Random
  154. int index = (int)(SupportClass.Random.NextDouble() * num_cards);
  155. Card card_i = (Card) deck.get_Renamed(i);
  156. Card card_index = (Card) deck.get_Renamed(index);
  157. deck.replace(i, card_index);
  158. deck.replace(index, card_i);
  159. }
  160. }
  161. public virtual Card dealCard() // метод раздачи карт не используетс
  162. {
  163. if (deck.size() > 0)
  164. {
  165. return deck.removeFromFront();
  166. }
  167. return null;
  168. }
  169. public class SupportClass
  170. {
  171. // обеспечивается доступ к статической переменной Random
  172. static public System.Random Random = new System.Random();
  173. }
  174. }
  175. /*****************************************************************************************************/
  176. public class CardDriver
  177. {
  178. public static void Main( String[ ] args)
  179. {
  180. Deck deck = new Deck(); // объект deck - колода карт
  181. Dealer dealer = new Dealer(deck); // колода карт передается дилеру
  182. Console.WriteLine("\n Упорядоченной колоды карт");
  183. printDeck(deck); // распечатать упорядоченную колоду карт
  184. dealer.shuffle(); // перетасовать колоду карт
  185. Console.WriteLine("\n Перетасованной колоды карт");
  186. printDeck(deck); // распечатать перетасованную колоды карт
  187. Console.ReadLine();
  188. }
  189. public static void printDeck(Deck deck) // метод – печать массива карт
  190. {
  191. for (int i = 0; i < 4; i++) // четыре масти
  192. {
  193. for (int j = 0; j < 9; j++) // карты 9-ти достоинств от 6 до туза
  194. {
  195. Card card = deck.removeFromFront();
  196. deck.returnToBack(card);
  197. Console.Write(card.display() + "\t ");
  198. }
  199. Console.WriteLine(" ");
  200. }
  201. }
  202. }
  203. }
помогите пожалуйста!

Решение задачи: «Класс колода карт»

textual
Листинг программы
  1. #region IEquatable<Card> Members
  2.  
  3.         public bool Equals(Card other)
  4.         {
  5.             throw new NotImplementedException();
  6.         }
  7.  
  8.         #endregion

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы