Advertisement
VodVas

Колода карт

Nov 22nd, 2023 (edited)
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.73 KB | Software | 0 0
  1. namespace Карты
  2. {
  3.     internal class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             Croupier croupier = new Croupier();
  8.  
  9.             croupier.PlayGame();
  10.         }
  11.     }
  12.  
  13.     class Croupier
  14.     {
  15.         private Deck _deck = new Deck();
  16.  
  17.         private Player _player = new Player();
  18.  
  19.         private Dictionary<string, int> _valueCardsInPoints = new Dictionary<string, int>();
  20.  
  21.         public void PlayGame()
  22.         {
  23.             const string GetCardMenu = "1";
  24.             const string ShowAllCardsAndPointsMenu = "2";
  25.             const string ShuffleMenu = "3";
  26.             const string ExitMenu = "4";
  27.  
  28.             bool isRun = true;
  29.  
  30.             AssignPoints();
  31.  
  32.             while (isRun)
  33.             {
  34.                 Console.WriteLine($"{GetCardMenu} - вытянуть карту\n{ShowAllCardsAndPointsMenu} - показать карты на руках\n{ShuffleMenu} - перетасовать карты\n{ExitMenu} - выход");
  35.  
  36.                 string userInput = Console.ReadLine();
  37.  
  38.                 switch (userInput)
  39.                 {
  40.                     case GetCardMenu:
  41.                         TransferCard();
  42.                         break;
  43.  
  44.                     case ShowAllCardsAndPointsMenu:
  45.                         ShowAllCardsAndPoints();
  46.                         break;
  47.  
  48.                     case ShuffleMenu:
  49.                         _deck.Shuffle();
  50.                         break;
  51.  
  52.                     case ExitMenu:
  53.                         isRun = false;
  54.                         break;
  55.  
  56.                     default:
  57.                         Console.WriteLine("\nНет такой команды\n");
  58.                         break;
  59.                 }
  60.             }
  61.         }
  62.  
  63.         private void AssignPoints()
  64.         {
  65.             string[] ranks = { "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
  66.  
  67.             int[] prices = { 6, 7, 8, 9, 10, 2, 3, 4, 11 };
  68.  
  69.             for (int i = 0; i < ranks.Length; i++)
  70.             {
  71.                 _valueCardsInPoints.Add(ranks[i], prices[i]);
  72.             }
  73.         }
  74.  
  75.         private void ShowAllCardsAndPoints()
  76.         {
  77.             int minCardInDeck = 1;
  78.             int _points = 0;
  79.  
  80.             if (_deck.CardCount() >= 1)
  81.             {
  82.                 foreach (var card in _player.ReturnCards())
  83.                 {
  84.                     _player.ShowCard(card);
  85.  
  86.                     _points += _valueCardsInPoints[card.Rank];
  87.                 }
  88.  
  89.                 Console.WriteLine($"\nОбщее количество очков - {_points}");
  90.  
  91.                 _points = 0;
  92.             }
  93.             else if (_deck.CardCount() > minCardInDeck)
  94.             {
  95.                 foreach (var card in _player.ReturnCards())
  96.                 {
  97.                     _player.ShowCard(card);
  98.                 }
  99.  
  100.                 Console.WriteLine("Карты в колоде закончились");
  101.             }
  102.             else
  103.             {
  104.                 Console.WriteLine("\nСначала вытяни карту\n");
  105.             }
  106.         }
  107.  
  108.         private void TransferCard()
  109.         {
  110.             _player.ShowCard(_player.AddCard(_deck.GiveCard()));
  111.         }
  112.     }
  113.  
  114.     class Player
  115.     {
  116.         private List<Card> _cards = new List<Card>();
  117.  
  118.         public Card AddCard(Card card)
  119.         {
  120.             if (card != null)
  121.             {
  122.                 _cards.Add(card);
  123.             }
  124.  
  125.             return card;
  126.         }
  127.  
  128.         public List<Card> ReturnCards()
  129.         {
  130.             return new List<Card>(_cards);
  131.         }
  132.  
  133.         public void ShowCard(Card card)
  134.         {
  135.             if (card != null)
  136.             {
  137.                 Console.WriteLine($"Масть - {card.Suit} || Номинал - {card.Rank}");
  138.             }
  139.         }
  140.     }
  141.  
  142.     class Card
  143.     {
  144.         public Card(string rank, char suit)
  145.         {
  146.             Rank = rank;
  147.             Suit = suit;
  148.         }
  149.  
  150.         public string Rank { get; private set; }
  151.         public char Suit { get; private set; }
  152.     }
  153.  
  154.     class Deck
  155.     {
  156.         private Random _random = new Random();
  157.  
  158.         private List<Card> _cards;
  159.  
  160.         public Deck()
  161.         {
  162.             _cards = new List<Card>();
  163.  
  164.             CreateCards();
  165.         }
  166.  
  167.         public int CardCount() => _cards.Count;
  168.  
  169.         public Card GiveCard()
  170.         {
  171.             Card card = null;
  172.  
  173.             int minCardInDeck = 1;
  174.             int topCardIndex = 0;
  175.  
  176.             if (_cards.Count >= minCardInDeck)
  177.             {
  178.                 card = _cards[topCardIndex];
  179.  
  180.                 _cards.Remove(card);
  181.             }
  182.             else
  183.             {
  184.                 Console.WriteLine("\nКарты в колоде закончились\n");
  185.             }
  186.  
  187.             return card;
  188.         }
  189.  
  190.         public void Shuffle()
  191.         {
  192.             for (int i = _cards.Count - 1; i >= 1; i--)
  193.             {
  194.                 int randomIndexInList = _random.Next(_cards.Count);
  195.  
  196.                 Card temporaryValue = _cards[randomIndexInList];
  197.                 _cards[randomIndexInList] = _cards[i];
  198.                 _cards[i] = temporaryValue;
  199.             }
  200.  
  201.             Console.WriteLine("\nКарты перетасованы\n");
  202.         }
  203.  
  204.         private void CreateCards()
  205.         {
  206.             string[] ranks = { "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
  207.             char[] suits = { '♣', '♦', '♥', '♠' };
  208.  
  209.             for (int i = 0; i < ranks.Length; i++)
  210.             {
  211.                 for (int j = 0; j < suits.Length; j++)
  212.                 {
  213.                     Card card = new Card(ranks[i], suits[j]);
  214.                     _cards.Add(card);
  215.                 }
  216.             }
  217.         }
  218.     }
  219. }
  220.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement