Advertisement
JohnJuly

Homework41

Apr 12th, 2025 (edited)
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.73 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Homework41
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Croupier croupier = new Croupier();
  11.  
  12.             croupier.Play();
  13.         }
  14.     }
  15.  
  16.     class Croupier
  17.     {
  18.         private Deck _deck;
  19.  
  20.         public Croupier()
  21.         {
  22.             _deck = new Deck();
  23.         }
  24.  
  25.         public void Play()
  26.         {
  27.             Player player = new Player();
  28.  
  29.             const string CommandDealCards = "deal";
  30.             const string CommandShowCards = "show";
  31.             const string CommandExitProgram = "exit";
  32.  
  33.             bool isWork = true;
  34.  
  35.             while (isWork)
  36.             {
  37.                 Console.WriteLine("Вы за игральным столом!!!");
  38.                 Console.WriteLine($"Если хотите сыграть, введите {CommandDealCards} !");
  39.                 Console.WriteLine($"Чтобы показать карты на руке, введите {CommandShowCards} !");
  40.                 Console.WriteLine($"Если хотите выйти из-за стола, введите {CommandExitProgram}");
  41.  
  42.                 string userInput = Console.ReadLine()?.Trim().ToLower();
  43.  
  44.                 switch (userInput)
  45.                 {
  46.                     case CommandDealCards:
  47.                         DealCards(player);
  48.                         break;
  49.                     case CommandShowCards:
  50.                         player.ShowCards();
  51.                         break;
  52.                     case CommandExitProgram:
  53.                         isWork = ExitProgram();
  54.                         break;
  55.                     default:
  56.                         Console.WriteLine("Неверная команда, попробуйте снова.");
  57.                         break;
  58.                 }
  59.  
  60.                 Console.ReadKey();
  61.                 Console.Clear();
  62.             }
  63.         }
  64.  
  65.         private void DealCards(Player player)
  66.         {
  67.             Console.Write("Введите количество карт для игрока: ");
  68.  
  69.             string userInput = Console.ReadLine();
  70.             int numberOfCards;
  71.  
  72.             if (int.TryParse(userInput, out numberOfCards) && numberOfCards > 0)
  73.             {
  74.                 if (numberOfCards <= _deck.CardsRemaining)
  75.                 {
  76.                     for (int i = 0; i < numberOfCards; i++)
  77.                     {
  78.                         Card card = _deck.DrawCard();
  79.                         if (card != null)
  80.                         {
  81.                             player.TakeCard(card);
  82.                         }
  83.                     }
  84.                     Console.WriteLine($"{numberOfCards} карт(ы) выданы игроку.");
  85.                 }
  86.                 else
  87.                 {
  88.                     Console.WriteLine("Недостаточно карт в колоде.");
  89.                 }
  90.             }
  91.             else
  92.             {
  93.                 Console.WriteLine("Введено некорректное количество.");
  94.             }
  95.         }
  96.  
  97.         private bool ExitProgram()
  98.         {
  99.             Console.WriteLine("Вы вышли из-за стола");
  100.             return false;
  101.         }
  102.     }
  103.  
  104.     class Player
  105.     {
  106.         private List<Card> _cards;
  107.  
  108.         public Player()
  109.         {
  110.             _cards = new List<Card>();
  111.         }
  112.  
  113.         public void TakeCard(Card card)
  114.         {
  115.             _cards.Add(card);
  116.         }
  117.  
  118.         public void ShowCards()
  119.         {
  120.             if (_cards.Count == 0)
  121.             {
  122.                 Console.WriteLine("У вас нет карт на руке.");
  123.             }
  124.             else
  125.             {
  126.                 Console.WriteLine("Карты на руке:");
  127.                 foreach (var card in _cards)
  128.                 {
  129.                     card.ShowInfo();
  130.                 }
  131.             }
  132.         }
  133.     }
  134.  
  135.     class Deck
  136.     {
  137.         private List<Card> _cards = new List<Card>();
  138.         private Random _random = new Random();
  139.  
  140.         public Deck()
  141.         {
  142.             FillCards();
  143.             ShuffleCards();
  144.         }
  145.  
  146.         public int CardsRemaining => _cards.Count;
  147.  
  148.         public Card DrawCard()
  149.         {
  150.             if (_cards.Count == 0)
  151.                 return null;
  152.  
  153.             Card card = _cards[0];
  154.             _cards.RemoveAt(0);
  155.             return card;
  156.         }
  157.  
  158.         private void FillCards()
  159.         {
  160.             List<string> names = new List<string>
  161.             {
  162.                 "2", "3", "4", "5", "6", "7", "8", "9", "10", "Валет", "Дама", "Король", "Туз"
  163.             };
  164.  
  165.             List<string> suits = new List<string>
  166.             {
  167.                 "Пики", "Черви", "Трефы", "Бубны"
  168.             };
  169.  
  170.             foreach (var suit in suits)
  171.             {
  172.                 foreach (var name in names)
  173.                 {
  174.                     _cards.Add(new Card(name, suit));
  175.                 }
  176.             }
  177.         }
  178.  
  179.         private void ShuffleCards()
  180.         {
  181.             for (int i = 0; i < _cards.Count; i++)
  182.             {
  183.                 int randomIndex = _random.Next(i, _cards.Count);
  184.                 var temp = _cards[i];
  185.                 _cards[i] = _cards[randomIndex];
  186.                 _cards[randomIndex] = temp;
  187.             }
  188.         }
  189.  
  190.     }
  191.  
  192.     class Card
  193.     {
  194.         private string _name;
  195.         private string _suit;
  196.  
  197.         public Card(string name, string suit)
  198.         {
  199.             _name = name;
  200.             _suit = suit;
  201.         }
  202.  
  203.         public void ShowInfo()
  204.         {
  205.             Console.WriteLine($"Название карты: {_name} | Масть: {_suit}");
  206.         }
  207.     }
  208. }
  209.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement