Advertisement
ZhongNi

Card deck (4)

Mar 28th, 2024 (edited)
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.81 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Classes
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Console.OutputEncoding = System.Text.Encoding.GetEncoding(1200);
  11.             Console.InputEncoding = System.Text.Encoding.GetEncoding(1200);
  12.  
  13.             Table table = new Table();
  14.  
  15.             table.TransferCard();
  16.             table.ShowPlayerHand();
  17.             table.ShowCardDeck();
  18.         }
  19.     }
  20.  
  21.     class Table
  22.     {
  23.         private CardDeck _cardDeck = new CardDeck();
  24.         private Player _player = new Player();
  25.  
  26.         public void TransferCard()
  27.         {
  28.             int countDeckCard = GetDesiredCardsCount();
  29.             int maxCountDeckCard = _cardDeck.Count;
  30.  
  31.             if (countDeckCard <= maxCountDeckCard && countDeckCard > 0)
  32.             {
  33.                 for (int i = 0; i < countDeckCard; i++)
  34.                 {
  35.                     _player.AddCard(_cardDeck.GiveCard());
  36.                 }
  37.             }
  38.             else
  39.             {
  40.                 Console.WriteLine("Хотите слишком много");
  41.             }
  42.         }
  43.  
  44.         public void ShowPlayerHand()
  45.         {
  46.             _player.ShowAll();
  47.         }
  48.  
  49.         public void ShowCardDeck()
  50.         {
  51.             _cardDeck.ShowAll();
  52.         }
  53.  
  54.         private int GetDesiredCardsCount()
  55.         {
  56.             Console.Write("Сколько карт хотите взять? : ");
  57.             int.TryParse(Console.ReadLine(), out int count);
  58.             return count;
  59.         }
  60.     }
  61.  
  62.     class Player
  63.     {
  64.         private List<Card> _cards = new List<Card>();
  65.  
  66.         public void AddCard(Card card)
  67.         {
  68.             if (card != null)
  69.                 _cards.Add(card);
  70.         }
  71.  
  72.         public void ShowAll()
  73.         {
  74.             Console.Write($"\nКарты у игрока: {_cards.Count}\n\n");
  75.  
  76.             foreach (Card card in _cards)
  77.             {
  78.                 Console.ForegroundColor = card.Color;
  79.                 Console.Write($"{card.Suit}{card.Value} ");
  80.                 Console.ResetColor();
  81.             }
  82.         }
  83.     }
  84.  
  85.     class CardDeck
  86.     {
  87.         private List<Card> _cards = new List<Card>();
  88.  
  89.         public CardDeck()
  90.         {
  91.             Create();
  92.             Shaffle();
  93.         }
  94.  
  95.         public int Count => _cards.Count;
  96.  
  97.         public void ShowAll()
  98.         {
  99.             int countLine = 4;
  100.             int cardInLine = _cards.Count / countLine;
  101.             int count = 0;
  102.  
  103.             Console.Write($"\n\nОставшиеся карты в колоде: {_cards.Count}\n\n");
  104.  
  105.             foreach (Card card in _cards)
  106.             {
  107.                 if (count > cardInLine)
  108.                 {
  109.                     Console.WriteLine("\n");
  110.                     count = 0;
  111.                 }
  112.  
  113.                 Console.ForegroundColor = card.Color;
  114.                 Console.Write($"{card.Suit}{card.Value} ");
  115.                 Console.ResetColor();
  116.                 count++;
  117.             }
  118.  
  119.             Console.WriteLine("\n");
  120.         }
  121.  
  122.         public Card GiveCard()
  123.         {
  124.             if (_cards.Count > 0)
  125.             {
  126.                 Card card = _cards[0];
  127.                 _cards.RemoveAt(0);
  128.                 return card;
  129.             }
  130.             else
  131.             {
  132.                 return null;
  133.             }
  134.         }
  135.  
  136.         private void Create()
  137.         {
  138.             string[] suit = { "\u2660", "\u2665", "\u2666", "\u2663" };
  139.             string[] value = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "j", "q", "k", "a" };
  140.  
  141.             for (int i = 0; i < suit.Length; i++)
  142.             {
  143.                 ConsoleColor color;
  144.  
  145.                 if (suit[i] == "\u2666" || suit[i] == "\u2665")
  146.                     color = ConsoleColor.DarkRed;
  147.                 else
  148.                     color = ConsoleColor.DarkCyan;
  149.  
  150.                 for (int j = 0; j < value.Length; j++)
  151.                 {
  152.                     _cards.Add(new Card(suit[i], value[j], color));
  153.                 }
  154.             }
  155.         }
  156.  
  157.         private void Shaffle()
  158.         {
  159.             Random random = new Random();
  160.  
  161.             for (int i = _cards.Count - 1; i > 0; i--)
  162.             {
  163.                 int randomIndex = random.Next(_cards.Count);
  164.                 Card tempValue = _cards[i];
  165.                 _cards[i] = _cards[randomIndex];
  166.                 _cards[randomIndex] = tempValue;
  167.             }
  168.         }
  169.     }
  170.  
  171.     class Card
  172.     {
  173.         public Card(string suit, string value, ConsoleColor color)
  174.         {
  175.             Suit = suit;
  176.             Value = value;
  177.             Color = color;
  178.         }
  179.  
  180.         public string Suit { get; private set; }
  181.         public string Value { get; private set; }
  182.         public ConsoleColor Color { get; private set; }
  183.     }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement