Advertisement
SaNik74

deck_of_cards

Jun 30th, 2024 (edited)
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.96 KB | None | 0 0
  1. using System.Net.Security;
  2. using System.Numerics;
  3.  
  4. namespace deck_of_cards
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Dealer dealer = new Dealer();
  11.  
  12.             dealer.Work();
  13.         }
  14.     }
  15.  
  16.     class Player
  17.     {
  18.         private List<Card> _cards = new List<Card>();
  19.  
  20.         public void TakeCard(Card card)
  21.         {
  22.             if (card == null)
  23.             {
  24.                 Console.WriteLine("Колода пуста.");
  25.                 return;
  26.             }
  27.  
  28.             _cards.Add(card);
  29.         }
  30.  
  31.         public void Show()
  32.         {
  33.             foreach (var cardItem in _cards)
  34.             {
  35.                 Console.WriteLine(cardItem.Suit + " " + cardItem.Rank);
  36.             }
  37.         }
  38.     }
  39.  
  40.     class Card
  41.     {
  42.         public Card(string suit, string rank)
  43.         {
  44.             Suit = suit;
  45.             Rank = rank;
  46.         }
  47.  
  48.         public string Suit { get; private set; }
  49.         public string Rank { get; private set; }
  50.     }
  51.  
  52.     class Deck
  53.     {
  54.         private List<Card> _cards = new List<Card>();
  55.  
  56.         public Deck()
  57.         {
  58.             Cards = _cards;
  59.             Create();
  60.             Shuffle();
  61.         }
  62.  
  63.         public List<Card> Cards { get; private set; } = new List<Card>();
  64.  
  65.         private void Create()
  66.         {
  67.             string[] ranks = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" };
  68.             string[] suits = { "Clubs", "Hearts", "Diamonds", "Spades" };
  69.  
  70.             for (int i = 0; i < suits.Length; i++)
  71.             {
  72.                 for (int j = 0; j < ranks.Length; j++)
  73.                 {
  74.                     Cards.Add(new Card(suits[i], ranks[j]));
  75.                 }
  76.             }
  77.         }
  78.  
  79.         private void Shuffle()
  80.         {
  81.             Random random = new Random();
  82.  
  83.             for (int j = Cards.Count - 1; j >= 1; j--)
  84.             {
  85.                 int numberOfRandomCard = random.Next(Cards.Count);
  86.                 Card tempCard = Cards[numberOfRandomCard];
  87.                 Cards[numberOfRandomCard] = Cards[j];
  88.                 Cards[j] = tempCard;
  89.             }
  90.         }
  91.     }
  92.  
  93.     class Dealer
  94.     {
  95.         private Player _player = new Player();
  96.         private Deck _deck = new Deck();
  97.  
  98.         public void Work()
  99.         {
  100.             bool isWorking = true;
  101.             int numbersOfCard;
  102.  
  103.             Console.WriteLine("Карты в колоде:");
  104.             ShowCards();
  105.             Console.WriteLine($"\nКарты у игрока:");
  106.             _player.Show();
  107.  
  108.             while (isWorking)
  109.             {
  110.                 Console.WriteLine("Введите сколько карт дать игроку:");
  111.  
  112.                 numbersOfCard = ReadInt();
  113.  
  114.                 if (numbersOfCard <= 0 || numbersOfCard > _deck.Cards.Count)
  115.                 {
  116.                     Console.WriteLine($"Необходимо ввести положителньное число, чтобы оно не превышало {_deck.Cards.Count}.");
  117.                     Console.ReadKey();
  118.                     Console.Clear();
  119.                 }
  120.                 else
  121.                 {
  122.                     for (int i = 0; i < numbersOfCard; i++)
  123.                     {
  124.                         _player.TakeCard(GiveCard());
  125.                     }
  126.  
  127.                     Console.Clear();
  128.  
  129.                     Console.WriteLine("Карты в колоде:");
  130.                     ShowCards();
  131.                     Console.WriteLine($"\nКарты у игрока:");
  132.                     _player.Show();
  133.  
  134.                     Console.WriteLine("До скорых встреч.");
  135.                     Console.ReadKey();
  136.                     Environment.Exit(0);
  137.                 }
  138.             }
  139.         }
  140.  
  141.         private Card GiveCard()
  142.         {
  143.             if (_deck.Cards.Count == 0)
  144.             {
  145.                 Console.WriteLine("В колде не осталось карт.");
  146.                 return null;
  147.             }
  148.  
  149.             Card card = _deck.Cards[_deck.Cards.Count - 1];
  150.             _deck.Cards.Remove(card);
  151.             return card;
  152.         }
  153.  
  154.         private void ShowCards()
  155.         {
  156.             foreach (var cardItem in _deck.Cards)
  157.             {
  158.                 Console.WriteLine($"{cardItem.Suit}  {cardItem.Rank}");
  159.             }
  160.         }
  161.  
  162.         private int ReadInt()
  163.         {
  164.             bool isWorking = true;
  165.             int numberOfCards = 0;
  166.  
  167.             while (isWorking)
  168.             {
  169.                 string userInput = Console.ReadLine();
  170.                 bool isNumber = int.TryParse(userInput, out numberOfCards);
  171.  
  172.                 if (isNumber == false)
  173.                 {
  174.                     Console.Write("Введите число:");
  175.                 }
  176.                 else
  177.                 {
  178.                     isWorking = false;
  179.                 }
  180.             }
  181.  
  182.             return numberOfCards;
  183.         }
  184.     }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement