ranee

Карты

Mar 22nd, 2023
533
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.23 KB | None | 0 0
  1. using System;
  2. using System.Numerics;
  3.  
  4. namespace DeckOfCards
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Deck deck = new Deck();
  11.             Player player = new Player();
  12.             Casino casino = new Casino();
  13.             deck.Shuffle();
  14.             casino.Run(deck, player);
  15.         }
  16.     }
  17.  
  18.     class Card
  19.     {
  20.         private string _suit;
  21.         private string _name;
  22.  
  23.         public Card(string suit, string name)
  24.         {
  25.             _suit = suit;
  26.             _name = name;
  27.         }
  28.  
  29.         public void ShowInfoCard()
  30.         {
  31.             Console.Write($"{_name} {_suit} ");
  32.         }
  33.     }
  34.  
  35.     class Deck
  36.     {
  37.         private List<Card> _cards;
  38.  
  39.         public Deck()
  40.         {
  41.             _cards = new List<Card>();
  42.             string[] suits = { "Черви", "Крести", "Буби", "Пики" };
  43.             string[] names = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "D", "K", "A" };
  44.  
  45.             for (int i = 0; i < suits.Length; i++)
  46.             {
  47.                 for (int j = 0; j < names.Length; j++)
  48.                 {
  49.                     _cards.Add(new Card(suits[i], names[j]));
  50.                 }
  51.             }
  52.         }
  53.  
  54.         public void Shuffle()
  55.         {
  56.             Random random = new Random();
  57.  
  58.             for (int i = 0; i < _cards.Count; i++)
  59.             {
  60.                 int randomRange = random.Next(_cards.Count);
  61.                 Card temp = _cards[randomRange];
  62.                 _cards[randomRange] = _cards[i];
  63.                 _cards[i] = temp;
  64.             }
  65.         }
  66.  
  67.         public int TakeRemainingCards()
  68.         {
  69.             return _cards.Count;
  70.         }
  71.  
  72.         public Card DrawCard()
  73.         {
  74.             Card card = _cards[0];
  75.             _cards.Remove(card);
  76.             return card;
  77.         }
  78.     }
  79.  
  80.     class Player
  81.     {
  82.         private List<Card> _cards;
  83.  
  84.         public Player()
  85.         {
  86.             _cards = new List<Card>();
  87.         }
  88.  
  89.         public void ShowCardInHand()
  90.         {
  91.             Console.WriteLine("Карты в руках:");
  92.  
  93.             foreach (Card card in _cards)
  94.             {
  95.                 card.ShowInfoCard();
  96.             }
  97.         }
  98.  
  99.         public void TakeCard(Card card)
  100.         {
  101.             _cards.Add(card);
  102.         }
  103.     }
  104.  
  105.     class Casino
  106.     {
  107.         private bool _isWork = true;
  108.         private int _minminimumNumberCards = 1;
  109.         readonly int numberForExit = 99;
  110.  
  111.         public void Run(Deck deck, Player player)
  112.         {
  113.             while (_isWork)
  114.             {
  115.                 Console.Clear();
  116.  
  117.                 if (deck.TakeRemainingCards() == 0)
  118.                 {
  119.                     _isWork = false;
  120.                     Console.WriteLine("Карты кончились.");
  121.                     player.ShowCardInHand();
  122.                     Console.ReadKey();
  123.                 }
  124.                 else
  125.                 {
  126.                     Console.WriteLine($"Карт доступно: {deck.TakeRemainingCards()}. Если карт достаточно набрать {numberForExit} ");
  127.                     Console.WriteLine("Сколько карт желаете взять: ");
  128.  
  129.                     if (int.TryParse(Console.ReadLine(), out int result))
  130.                     {
  131.                         if (result >= _minminimumNumberCards && result <= deck.TakeRemainingCards())
  132.                         {
  133.                             for (int i = 0; i < result; i++)
  134.                             {
  135.                                 Card card = deck.DrawCard();
  136.                                 player.TakeCard(card);
  137.                             }
  138.                         }
  139.                         else if (result == numberForExit)
  140.                         {
  141.                             _isWork = false;
  142.                             player.ShowCardInHand();
  143.                             Console.ReadKey();
  144.                         }
  145.                         else
  146.                         {
  147.                             Console.WriteLine("Неверный ввод.");
  148.                             Console.ReadKey();
  149.                         }
  150.                     }
  151.                 }
  152.             }
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment