Класс колода карт - C#
Формулировка задачи:
Здраствуйте!Люди добрые помогите пожалуйста вообще не могу в ехать в тему "классы"=(
вообщем вот : это не предлагать
класс должен, как правило, содержать следующие эле*менты: скрытые поля, конструкторы с параметрами и без параметров, методы;свойства, индексаторы; перегруженные операции. Функциональные элементы класса должны обеспечивать непротиворечивый, полный, минимальный и удобный интер*фейс класса. При возникновении ошибок должны выбрасываться исключения.
В программе должна выполняться проверка всех разработанных элементов класса.
помогите пожалуйста!
и само задание описать класс "Колода карт", включающий в себя закрытый массив элементов класса "карта". В карте хранятся масть и номер. Обеспечить возможность вывода карты по номеру, вывода всех карт, перемешивания колоды и выдачи всех карт из колоды по одиночке и по 6 штук в случайном порядке!
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace sstud
- { // Общий закрытый класс Suit (масть карты)
- public sealed class Suit
- {
- // Статически определяет все допустимые значения масти
- public static readonly Suit DIAMONDS = new Suit((char) 4); // ♦
- public static readonly Suit HEARTS = new Suit((char) 3); //♥
- public static readonly Suit SPADES = new Suit((char) 6); //в™*
- public static readonly Suit CLUBS = new Suit((char) 5); //в™Ј
- // Помогает выполнить итерации по перечислимым значениям
- public static readonly Suit[ ] SUIT = new Suit[ ]{DIAMONDS, HEARTS, SPADES, CLUBS};
- // Переменная экземпляра display для хранения отображаемого значения
- private readonly char display;
- // He позволить создавать экземпляры вне объектов
- private Suit(char display) // конструктор
- {
- this.display = display;
- }
- // ToString() – переопределяющий возвратить значение масти
- public override System.String ToString() // ToString() – м-д класса String
- {
- return System.Convert.ToString(display);
- }
- }
- /*****************************************************************************************************/
- // Общий закрытый класс Rank (достоинство карты
- public sealed class Rank
- {
- public static readonly Rank SIX = new Rank(6, "6");
- public static readonly Rank SEVEN = new Rank(7, "7");
- public static readonly Rank EIGHT = new Rank(8, "8");
- public static readonly Rank NINE = new Rank(9, "9");
- public static readonly Rank TEN = new Rank(10, "10");
- public static readonly Rank JACK = new Rank(11, "J"); // валет
- public static readonly Rank QUEEN = new Rank(12, "Q"); // дама
- public static readonly Rank KING = new Rank(13, "K"); // король
- public static readonly Rank ACE = new Rank(14, "A"); // туз
- // Общий статический Rank (достоинство карты)
- public static readonly Rank[ ] RANK = new Rank[ ]{ SIX, SEVEN,
- EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE};
- private readonly int rank;
- // Переменная экземпляра rank для хранения отображаемого значения
- private System.String display;
- private Rank(int rank, System.String display) // конструктор
- {
- this.rank = rank;
- this.display = display;
- }
- public int getRank() // возврат достоинства карты
- {
- return rank;
- }
- // ToString() – переопределяющий
- public override System.String ToString()
- {
- return display;
- }
- }
- /*****************************************************************************************************/
- public class Card // Листинг 1с
- { private Rank rank;
- private Suit suit;
- /* создание новой карты - при этом используются только те константы,
- которые были инициализированы */
- public Card(Suit suit, Rank rank) // конструктор – создается карта
- {
- this.suit = suit;
- this.rank = rank;
- }
- virtual public Suit Suit // свойство – получить значение масти карты
- {
- get { return suit; }
- }
- virtual public Rank Rank // свойство – получить значение достоинства карты
- {
- get { return rank; }
- }
- public virtual System.String display() // строковое представление карты
- {
- return rank.ToString() + suit.ToString();
- }
- }
- /*****************************************************************************************************/
- public class Deck
- {
- private System.Collections.ArrayList deck; // динамический массив
- public Deck()
- {
- buildCards();
- }
- public virtual Card get_Renamed(int index)
- {
- if (index < deck.Count) // Count – это свойство класса ArrayList
- { // deck[index] – это элемент массива
- return (Card) deck[index];
- }
- return null;
- }
- public virtual void replace(int index, Card card) // перестановка карт
- {
- deck[index] = card;
- }
- public virtual int size()
- {
- return deck.Count; // Count – это свойство класса ArrayList
- }
- public virtual Card removeFromFront() // метод – извлечение карты
- {
- if (deck.Count > 0) // Count – это свойство класса ArrayList
- {
- System.Object tempObject;
- tempObject = deck[0];
- deck.RemoveAt(0); // RemoveAt – это м-д класса ArrayList
- Card card = (Card) tempObject;
- return card;
- }
- return null;
- }
- public virtual void returnToBack(Card card) // метод – возврат карты
- {
- deck.Add(card); // Add – это м-д класса ArrayList
- }
- private void buildCards()
- { // создание колоды карт
- // объект deck класса ArrayList()- динамический массив
- deck = new System.Collections.ArrayList();
- for (int i = 0; i < Suit.SUIT.Length; i++)
- {
- for (int j = 0; j < Rank.RANK.Length; j++)
- { // Add – это м-д класса ArrayList
- deck.Add(new Card(Suit.SUIT[i], Rank.RANK[j]));
- }
- }
- }
- }
- /*****************************************************************************************************/
- public class Dealer //Листинг 3а
- {
- private Deck deck; // прямой доступ к колоде закрыт
- public Dealer(Deck d)
- {
- deck = d;
- }
- public virtual void shuffle() // этот метод перетасовывает карты
- {
- // расположить карты случайным образом
- int num_cards = deck.size();
- for (int i = 0; i < num_cards; i++)
- { // NextDouble() – м-д класса Random
- int index = (int)(SupportClass.Random.NextDouble() * num_cards);
- Card card_i = (Card) deck.get_Renamed(i);
- Card card_index = (Card) deck.get_Renamed(index);
- deck.replace(i, card_index);
- deck.replace(index, card_i);
- }
- }
- public virtual Card dealCard() // метод раздачи карт не используетс
- {
- if (deck.size() > 0)
- {
- return deck.removeFromFront();
- }
- return null;
- }
- public class SupportClass
- {
- // обеспечивается доступ к статической переменной Random
- static public System.Random Random = new System.Random();
- }
- }
- /*****************************************************************************************************/
- public class CardDriver
- {
- public static void Main( String[ ] args)
- {
- Deck deck = new Deck(); // объект deck - колода карт
- Dealer dealer = new Dealer(deck); // колода карт передается дилеру
- Console.WriteLine("\n Упорядоченной колоды карт");
- printDeck(deck); // распечатать упорядоченную колоду карт
- dealer.shuffle(); // перетасовать колоду карт
- Console.WriteLine("\n Перетасованной колоды карт");
- printDeck(deck); // распечатать перетасованную колоды карт
- Console.ReadLine();
- }
- public static void printDeck(Deck deck) // метод – печать массива карт
- {
- for (int i = 0; i < 4; i++) // четыре масти
- {
- for (int j = 0; j < 9; j++) // карты 9-ти достоинств от 6 до туза
- {
- Card card = deck.removeFromFront();
- deck.returnToBack(card);
- Console.Write(card.display() + "\t ");
- }
- Console.WriteLine(" ");
- }
- }
- }
- }
Решение задачи: «Класс колода карт»
textual
Листинг программы
- #region IEquatable<Card> Members
- public bool Equals(Card other)
- {
- throw new NotImplementedException();
- }
- #endregion
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д