Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Threading;
- namespace Task41
- {
- internal class Program
- {
- private static void Main(string[] args)
- {
- Player player = new Player();
- Deck deck = new Deck();
- bool isExit = false;
- bool isActive;
- string menuFirstOption =
- "Take - взять карту \n" +
- "Show - прекратить брать карты и вывести всю информацию о картах \n" +
- "Deck - показать карты в колоде \n" +
- "Stop - выход из цикла ";
- string menuSecondOption =
- "Exit - выход из программы \n" +
- "Любая клавиша для перезапуска программы ";
- string goodbye =
- "До свидания.";
- string noCardInDeck =
- "Колода пуста.";
- string requestWriteCommand =
- "Введите команду: ";
- string outputDataCard =
- "Вывожу данные карт: ";
- string restartProgram =
- "Программа перезапускается. ";
- string requestInput =
- "Нажмите любую кнопку или Enter для продолжения. ";
- string noSearchCommand =
- "Не нашли подходящей команды, проверте правильность написания команды и её соответвие выведенному меню. Попробуйте ещё раз. ";
- string userInput;
- while (isExit == false)
- {
- isActive = true;
- while (isActive == true)
- {
- Console.Clear();
- Console.WriteLine(menuFirstOption);
- Console.Write(requestWriteCommand);
- userInput = Console.ReadLine();
- if (deck.IsEmptyCard() == false)
- {
- Card card = deck.Give();
- switch (userInput)
- {
- case "Take":
- player.TakeCard(card);
- break;
- case "Show":
- player.Show();
- break;
- case "Deck":
- deck.Show();
- break;
- case "Stop":
- isActive = false;
- break;
- default:
- Console.WriteLine(noSearchCommand);
- break;
- }
- }
- else
- {
- isActive = false;
- Console.WriteLine(noCardInDeck);
- Console.WriteLine(outputDataCard);
- deck.Show();
- }
- Console.WriteLine(requestInput);
- Console.ReadKey();
- }
- Console.WriteLine(outputDataCard);
- player.Show();
- Console.WriteLine();
- Console.WriteLine(menuSecondOption);
- userInput = Console.ReadLine();
- switch (userInput)
- {
- case "Exit":
- isExit = true;
- break;
- default:
- Console.WriteLine(restartProgram);
- break;
- }
- Console.WriteLine(requestInput);
- Console.ReadKey();
- }
- Console.WriteLine(goodbye);
- }
- }
- class Player
- {
- private List<Card> _takenCards = new List<Card>();
- public void TakeCard(Card card)
- {
- _takenCards.Add(card);
- }
- public void Show()
- {
- string descriptionCard =
- "Описание карты: ";
- string descriptionSuitCard =
- " масть - ";
- string descriptionRankCard =
- " достоинство - ";
- foreach (var card in _takenCards)
- {
- Console.WriteLine(descriptionCard + descriptionSuitCard + card.Suit + "; " + descriptionRankCard + card.Rank);
- }
- }
- }
- class Card
- {
- public string Suit { get; private set; }
- public string Rank { get; private set; }
- public Card(string suit, string rank)
- {
- Suit = suit;
- Rank = rank;
- }
- }
- class Deck
- {
- private Stack<Card> _cards = new Stack<Card>();
- public Deck()
- {
- Create();
- }
- public Card Give()
- {
- return _cards.Pop();
- }
- public bool IsEmptyCard()
- {
- if (_cards.Count == 0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public void Show()
- {
- string descriptionCard =
- "Описание карты: ";
- string descriptionSuitCard =
- " масть - ";
- string descriptionRankCard =
- " достоинство - ";
- foreach (var card in _cards)
- {
- Console.WriteLine(descriptionCard + descriptionSuitCard + card.Suit + "; " + descriptionRankCard + card.Rank);
- }
- }
- private void Create()
- {
- Random random = new Random();
- List<Card> cardsAll = new List<Card>();
- string cardMixed =
- "Карты перемешиваются: ";
- string numberTimes =
- " - раз'а. ";
- string[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
- string[] ranks = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" };
- int maxValueMix = 11;
- int mixCardCount = random.Next(0, maxValueMix);
- for (int i = 0; i < suits.Length; i++)
- {
- for (int j = 0; j < ranks.Length; j++)
- {
- Card card = new Card(suits[i], ranks[j]);
- cardsAll.Add(card);
- }
- }
- Console.WriteLine(cardMixed + mixCardCount + numberTimes);
- for (int i = 0; i < mixCardCount; i++)
- {
- MixCard(cardsAll);
- }
- Add(cardsAll);
- }
- private void MixCard(List<Card> cardsAll)
- {
- Random rand = new Random();
- int count = cardsAll.Count;
- for (int i = 0; i < count; i++)
- {
- Card tempCard = cardsAll[i];
- cardsAll.RemoveAt(i);
- cardsAll.Insert(rand.Next(0,count),tempCard);
- }
- }
- private void Add(List<Card> cardsAll)
- {
- foreach (var card in cardsAll)
- {
- _cards.Push(card);
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment