IGRODELOFF

Task41

Jul 20th, 2022 (edited)
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Threading;
  7.  
  8. namespace Task41
  9. {
  10.     internal class Program
  11.     {
  12.         private static void Main(string[] args)
  13.         {
  14.             Player player = new Player();
  15.             Deck deck = new Deck();
  16.  
  17.             bool isExit = false;
  18.             bool isActive;
  19.  
  20.             string menuFirstOption =
  21.                 "Take - взять карту \n" +
  22.                 "Show - прекратить брать карты и вывести всю информацию о картах \n" +
  23.                 "Deck - показать карты в колоде \n" +
  24.                 "Stop - выход из цикла ";
  25.             string menuSecondOption =
  26.                 "Exit - выход из программы \n" +
  27.                 "Любая клавиша для перезапуска программы ";
  28.             string goodbye =
  29.                 "До свидания.";
  30.             string noCardInDeck =
  31.                 "Колода пуста.";
  32.             string requestWriteCommand =
  33.                 "Введите команду: ";
  34.             string outputDataCard =
  35.                 "Вывожу данные карт: ";
  36.             string restartProgram =
  37.                 "Программа перезапускается. ";
  38.             string requestInput =
  39.                 "Нажмите любую кнопку или Enter для продолжения. ";
  40.             string noSearchCommand =
  41.                 "Не нашли подходящей команды, проверте правильность написания команды и её соответвие выведенному меню. Попробуйте ещё раз. ";
  42.             string userInput;
  43.  
  44.             while (isExit == false)
  45.             {
  46.                 isActive = true;
  47.  
  48.                 while (isActive == true)
  49.                 {
  50.                     Console.Clear();
  51.                     Console.WriteLine(menuFirstOption);
  52.                     Console.Write(requestWriteCommand);
  53.  
  54.                     userInput = Console.ReadLine();
  55.  
  56.                     if (deck.IsEmptyCard() == false)
  57.                     {
  58.                         Card card = deck.Give();
  59.  
  60.                         switch (userInput)
  61.                         {
  62.                             case "Take":
  63.                                 player.TakeCard(card);
  64.                                 break;
  65.                             case "Show":
  66.                                 player.Show();
  67.                                 break;
  68.                             case "Deck":
  69.                                 deck.Show();
  70.                                 break;
  71.                             case "Stop":
  72.                                 isActive = false;
  73.                                 break;
  74.                             default:
  75.                                 Console.WriteLine(noSearchCommand);
  76.                                 break;
  77.                         }
  78.                     }
  79.                     else
  80.                     {
  81.                         isActive = false;
  82.  
  83.                         Console.WriteLine(noCardInDeck);
  84.                         Console.WriteLine(outputDataCard);  
  85.  
  86.                         deck.Show();
  87.                     }
  88.  
  89.                     Console.WriteLine(requestInput);
  90.                     Console.ReadKey();
  91.                 }
  92.  
  93.                 Console.WriteLine(outputDataCard);
  94.  
  95.                 player.Show();
  96.  
  97.                 Console.WriteLine();
  98.                 Console.WriteLine(menuSecondOption);
  99.  
  100.                 userInput = Console.ReadLine();
  101.  
  102.                 switch (userInput)
  103.                 {
  104.                     case "Exit":
  105.                         isExit = true;
  106.                         break;
  107.                     default:
  108.                         Console.WriteLine(restartProgram);
  109.                         break;
  110.                 }
  111.  
  112.                 Console.WriteLine(requestInput);
  113.                 Console.ReadKey();
  114.             }
  115.  
  116.             Console.WriteLine(goodbye);
  117.         }
  118.     }
  119.  
  120.     class Player
  121.     {
  122.         private List<Card> _takenCards = new List<Card>();
  123.  
  124.         public void TakeCard(Card card)
  125.         {
  126.             _takenCards.Add(card);
  127.         }
  128.  
  129.         public void Show()
  130.         {
  131.             string descriptionCard =
  132.                 "Описание карты: ";
  133.             string descriptionSuitCard =
  134.                 " масть - ";
  135.             string descriptionRankCard =
  136.                 " достоинство - ";
  137.  
  138.             foreach (var card in _takenCards)
  139.             {
  140.                 Console.WriteLine(descriptionCard + descriptionSuitCard + card.Suit + "; " + descriptionRankCard + card.Rank);
  141.             }
  142.         }
  143.     }
  144.  
  145.     class Card
  146.     {
  147.         public string Suit { get; private set; }
  148.  
  149.         public string Rank { get; private set; }
  150.  
  151.         public Card(string suit, string rank)
  152.         {
  153.             Suit = suit;
  154.             Rank = rank;
  155.         }
  156.     }
  157.  
  158.     class Deck
  159.     {
  160.         private Stack<Card> _cards = new Stack<Card>();
  161.  
  162.         public Deck()
  163.         {
  164.             Create();
  165.         }
  166.  
  167.         public Card Give()
  168.         {
  169.             return _cards.Pop();
  170.         }
  171.  
  172.         public bool IsEmptyCard()
  173.         {
  174.             if (_cards.Count == 0)
  175.             {
  176.                 return true;
  177.             }
  178.             else
  179.             {
  180.                 return false;
  181.             }
  182.         }
  183.  
  184.         public void Show()
  185.         {
  186.             string descriptionCard =
  187.                 "Описание карты: ";
  188.             string descriptionSuitCard =
  189.                 " масть - ";
  190.             string descriptionRankCard =
  191.                 " достоинство - ";
  192.  
  193.             foreach (var card in _cards)
  194.             {
  195.                 Console.WriteLine(descriptionCard + descriptionSuitCard + card.Suit + "; " + descriptionRankCard + card.Rank);
  196.             }
  197.         }
  198.  
  199.         private void Create()
  200.         {
  201.             Random random = new Random();
  202.             List<Card> cardsAll = new List<Card>();
  203.  
  204.             string cardMixed =
  205.                 "Карты перемешиваются: ";
  206.             string numberTimes =
  207.                 " - раз'а. ";
  208.             string[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
  209.             string[] ranks = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" };
  210.  
  211.             int maxValueMix = 11;
  212.             int mixCardCount = random.Next(0, maxValueMix);
  213.  
  214.             for (int i = 0; i < suits.Length; i++)
  215.             {
  216.                 for (int j = 0; j < ranks.Length; j++)
  217.                 {
  218.                     Card card = new Card(suits[i], ranks[j]);
  219.                     cardsAll.Add(card);
  220.                 }
  221.             }
  222.  
  223.             Console.WriteLine(cardMixed + mixCardCount + numberTimes);
  224.  
  225.             for (int i = 0; i < mixCardCount; i++)
  226.             {
  227.                 MixCard(cardsAll);
  228.             }
  229.  
  230.             Add(cardsAll);
  231.         }
  232.  
  233.         private void MixCard(List<Card> cardsAll)
  234.         {
  235.             Random rand = new Random();
  236.             int count = cardsAll.Count;
  237.            
  238.             for (int i = 0; i < count; i++)
  239.             {
  240.                 Card tempCard = cardsAll[i];
  241.                 cardsAll.RemoveAt(i);
  242.                 cardsAll.Insert(rand.Next(0,count),tempCard);
  243.             }
  244.         }
  245.  
  246.         private void Add(List<Card> cardsAll)
  247.         {
  248.             foreach (var card in cardsAll)
  249.             {
  250.                 _cards.Push(card);
  251.             }
  252.         }
  253.     }
  254. }
Add Comment
Please, Sign In to add comment