IvanOseledko

Homework41

Feb 7th, 2025 (edited)
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.11 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Homework41
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Player player = new Player();
  10.             Deck deck = new Deck();
  11.             Dealer dealer = new Dealer(deck, player);
  12.  
  13.             dealer.RequestCards();
  14.             dealer.IssueCards();
  15.             player.ShowAllCadrs();
  16.         }
  17.     }
  18.  
  19.     class Dealer
  20.     {
  21.         private Deck _deck;
  22.         private Player _player;
  23.         private int _desiredPlayerCards;
  24.  
  25.         public Dealer(Deck deck, Player player)
  26.         {
  27.             _deck = deck;
  28.             _player = player;
  29.         }
  30.  
  31.         private bool TryIssueCards()
  32.         {
  33.             return _deck.CardsCount >= _desiredPlayerCards;
  34.         }
  35.  
  36.         public void IssueCards()
  37.         {
  38.             if (TryIssueCards())
  39.             {
  40.                 List<Card> cards = new List<Card>();
  41.  
  42.                 for (int i = 0; i < _desiredPlayerCards; i++)
  43.                 {
  44.                     cards.Add(_deck.GiveCard());
  45.                 }
  46.  
  47.                 _player.AddCards(cards);
  48.             }
  49.             else
  50.             {
  51.                 Console.WriteLine("\nНедостаточно карт в колоде.");
  52.             }
  53.         }
  54.  
  55.         public void RequestCards()
  56.         {
  57.             int desiredCards;
  58.  
  59.             Console.Write("Введите количество карт, которое хотите получить: ");
  60.  
  61.             while (int.TryParse(Console.ReadLine(), out desiredCards) == false && desiredCards > 0)
  62.             {
  63.                 Console.Write("\n\nНекорректное количество карт. Пожалуйста, введите положительное число: ");
  64.             }
  65.  
  66.            _desiredPlayerCards = desiredCards;
  67.         }
  68.     }
  69.  
  70.     class Player
  71.     {
  72.         private List<Card> _cards = new List<Card>();
  73.                
  74.         public void ShowAllCadrs()
  75.         {
  76.             Console.WriteLine("\nКарты игрока: \n");
  77.  
  78.             foreach (var card in _cards)
  79.             {
  80.                 card.ShowInfo();
  81.             }
  82.         }
  83.  
  84.         public void AddCards(List<Card> cards)
  85.         {
  86.             if (cards.Count == 0)
  87.             {
  88.                 Console.WriteLine("\nНевозможно выдать столько карт...");
  89.             }
  90.             else
  91.             {
  92.                 _cards.AddRange(cards);
  93.             }
  94.         }      
  95.     }
  96.  
  97.     class Deck
  98.     {
  99.         private Stack<Card> _cards = new Stack<Card>();        
  100.  
  101.         public Deck()
  102.         {
  103.             FillWithCards();
  104.  
  105.             CardsCount = _cards.Count;
  106.         }
  107.            
  108.         public int CardsCount { get; private set; }
  109.  
  110.         private void FillWithCards()
  111.         {
  112.             foreach (CardSuit suit in Enum.GetValues(typeof(CardSuit)))
  113.             {
  114.                 foreach (CardValue value in Enum.GetValues(typeof(CardValue)))
  115.                 {
  116.                     _cards.Push(new Card(suit, value));
  117.                 }
  118.             }
  119.         }
  120.  
  121.         public Card GiveCard()
  122.         {
  123.             if (_cards.Count == 0)
  124.             {
  125.                 Console.WriteLine("\nКолода пуста, невозможно взять карту.");
  126.  
  127.                 return null;
  128.             }
  129.                    
  130.             return _cards.Pop();            
  131.         }
  132.     }
  133.  
  134.     class Card
  135.     {
  136.         private CardSuit _suit;
  137.         private CardValue _value;
  138.        
  139.         public Card(CardSuit suit, CardValue value)
  140.         {
  141.             _suit = suit;
  142.             _value = value;
  143.         }
  144.                
  145.         public void ShowInfo()
  146.         {
  147.             Console.WriteLine($"Масть: {_suit}, значение: {_value}");
  148.         }
  149.     }
  150.  
  151.     public enum CardSuit
  152.     {
  153.         Hearts,    
  154.         Spades,    
  155.         Clubs,    
  156.         Diamonds  
  157.     }
  158.  
  159.     public enum CardValue
  160.     {
  161.         Six = 6,
  162.         Seven,
  163.         Eight,
  164.         Nine,
  165.         Ten,
  166.         Jack,    
  167.         Queen,  
  168.         King,    
  169.         Ace      
  170.     }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment