Advertisement
SPavelA

OOPTask4CroupierCards

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