Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Reflection;
- internal class Program
- {
- static void Main(string[] args)
- {
- const string CommandDealCardToPlayer = "1";
- const string CommandShowCardPlayer = "2";
- const string CommandExit = "Exit";
- bool isRun = true;
- Dealer dealer = new Dealer();
- dealer.ShuffleDeck();
- while (isRun)
- {
- Console.Clear();
- Console.WriteLine($"{CommandDealCardToPlayer} - Дать карты играку." +
- $"\n{CommandShowCardPlayer} - Показать карты игрока." +
- $"\n{CommandExit} - Завершить программу.");
- switch (Console.ReadLine())
- {
- case CommandDealCardToPlayer:
- dealer.DealCardToPlayer();
- break;
- case CommandShowCardPlayer:
- dealer.ShowPlayerCard();
- break;
- case CommandExit:
- isRun = false;
- break;
- default:
- Console.WriteLine("Ошибка ввода.");
- break;
- }
- }
- Console.WriteLine("Программа завершена.");
- Console.ReadKey();
- }
- }
- enum Suit
- {
- Hearts,
- Diamonds,
- Clubs,
- Spades
- }
- enum Rank
- {
- Two,
- Three,
- Four,
- Five,
- Six,
- Seven,
- Eight,
- Nine,
- Ten,
- Jack,
- Queen,
- King,
- Ace
- }
- class Dealer
- {
- private Player _player;
- private Deck _deckCard;
- public Dealer()
- {
- _player = new Player();
- _deckCard = new Deck();
- }
- public void ShowPlayerCard()
- {
- _player.ShowCards();
- Console.ReadKey();
- }
- public void DealCardToPlayer()
- {
- string userInput;
- Console.Write("Сколько карт передать? ");
- userInput = Console.ReadLine();
- int numberCards = ReadInt(userInput);
- for (int i = 0; i < numberCards; i++)
- {
- if (_deckCard.TryDealCard(out Card card))
- {
- _player.GetCard(card);
- }
- else
- {
- Console.WriteLine("В колоде не осталсь карт.");
- break;
- }
- }
- Console.ReadKey();
- }
- public void ShuffleDeck()
- {
- _deckCard.Shuffle();
- }
- private int ReadInt(string input)
- {
- int result;
- int.TryParse(input, out result);
- return result;
- }
- }
- class Player
- {
- private List<Card> _cards;
- public Player()
- {
- _cards = new List<Card>();
- }
- public void ShowCards()
- {
- Console.WriteLine("У игрока на руках:");
- foreach (Card card in _cards)
- {
- Console.WriteLine(card);
- }
- }
- public void GetCard(Card card)
- {
- _cards.Add(card);
- }
- }
- class Card
- {
- public Card(Suit suit, Rank rank)
- {
- Suit = suit;
- Rank = rank;
- }
- public Suit Suit { get; private set; }
- public Rank Rank { get; private set; }
- public override string ToString()
- {
- return $"{Rank} {Suit}";
- }
- }
- class Deck
- {
- private static Random s_random = new Random();
- private List<Card> _cards = new List<Card>();
- public Deck()
- {
- foreach (Suit suit in Enum.GetValues(typeof(Suit)))
- {
- foreach (Rank rank in Enum.GetValues(typeof(Rank)))
- {
- _cards.Add(new Card(suit, rank));
- }
- }
- }
- public void Shuffle()
- {
- for (int i = _cards.Count - 1; i > 0; i--)
- {
- int index = s_random.Next(i + 1);
- (_cards[i], _cards[index]) = (_cards[index], _cards[i]);
- }
- }
- public bool TryDealCard(out Card card)
- {
- if (_cards.Count == 0)
- {
- card = null;
- return false;
- }
- int lastIndex = _cards.Count - 1;
- card = _cards[lastIndex];
- _cards.RemoveAt(lastIndex);
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment