Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace CSLight
- {
- class Program
- {
- static void Main(string[] args)
- {
- Deck deck = new Deck();
- Player player = new Player();
- GamingTable gamingTable = new GamingTable(deck, player);
- gamingTable.DistributeCards();
- gamingTable.ShowPlayerCards();
- }
- }
- class GamingTable
- {
- private Deck _deck;
- private Player _player;
- public GamingTable(Deck deck, Player player)
- {
- _deck = deck;
- _player = player;
- }
- public void DistributeCards()
- {
- bool isInputValid = false;
- int cardsToDistribute = 0;
- while (isInputValid == false)
- {
- Console.WriteLine($"Сколько карт вы хотите получить? (в колоде {_deck.CardsCount} карт)");
- cardsToDistribute = ReadInt();
- if (cardsToDistribute > _deck.CardsCount)
- {
- Console.WriteLine($"Вы ввели больше {_deck.CardsCount} карт. Попробуйте еще раз.");
- }
- else if (cardsToDistribute <= 0)
- {
- Console.WriteLine("Введите положительное число карт.");
- }
- else
- {
- isInputValid = true;
- }
- }
- for (int i = 0; i < cardsToDistribute; i++)
- {
- if (_deck.TryTakeCard(out Card card))
- {
- _player.TakeCard(card);
- }
- }
- }
- public void ShowPlayerCards()
- {
- _player.ShowCards();
- }
- private int ReadInt()
- {
- int result;
- while (int.TryParse(Console.ReadLine(), out result) == false)
- {
- Console.WriteLine("Ошибка. Попробуйте еще раз:");
- }
- return result;
- }
- }
- class Player
- {
- private List<Card> _cards = new List<Card>();
- public void TakeCard(Card card)
- {
- _cards.Add(card);
- }
- public void ShowCards()
- {
- if (_cards.Count == 0)
- {
- Console.WriteLine("У игрока нет карт");
- return;
- }
- foreach (var card in _cards)
- {
- card.ShowInfo();
- }
- }
- }
- class Deck
- {
- private List<Card> _cards = new List<Card>();
- private Random _random = new Random();
- public int CardsCount => _cards.Count;
- public Deck()
- {
- Initialize();
- }
- private void Initialize()
- {
- string[] suits = { "Черви", "Бубны", "Крести", "Пики" };
- string[] meanings = { "9", "10", "Валет", "Дама", "Король", "Туз" };
- foreach (string suit in suits)
- {
- foreach (string meaning in meanings)
- {
- _cards.Add(new Card(suit, meaning));
- }
- }
- Shuffle();
- }
- public bool TryTakeCard(out Card card)
- {
- if (_cards.Count > 0)
- {
- card = _cards[0];
- _cards.RemoveAt(0);
- return true;
- }
- card = null;
- return false;
- }
- private void Shuffle()
- {
- for (int currentIndex = _cards.Count - 1; currentIndex >= 1; currentIndex--)
- {
- int randomIndex = _random.Next(currentIndex + 1);
- Card temp = _cards[randomIndex];
- _cards[randomIndex] = _cards[currentIndex];
- _cards[currentIndex] = temp;
- }
- }
- }
- class Card
- {
- public Card(string suit, string meaning)
- {
- Suit = suit;
- Meaning = meaning;
- }
- public string Suit { get; private set; }
- public string Meaning { get; private set; }
- public void ShowInfo()
- {
- Console.WriteLine($"Карта {Meaning} | {Suit}");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement