Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Home_Work
- {
- class Program
- {
- static void Main()
- {
- CardGame cardGame = new CardGame();
- cardGame.Play();
- }
- }
- class CardGame
- {
- private Player _player;
- private CardDeck _cardDeck;
- public void Play()
- {
- bool isPlaying = true;
- Console.WriteLine("Приветствуем тебя. " +
- "\nТебе нужно брать карты, пока они не закончаться или ты не захочешь выйти.");
- while (isPlaying)
- {
- int deckSize = ChooseDeckSize();
- _cardDeck = new CardDeck(deckSize);
- _player = new Player();
- TakeCards();
- _player.ShowCards();
- isPlaying = IsExit() == false;
- Console.Clear();
- }
- }
- private bool IsExit()
- {
- Console.WriteLine("Нажмите Esc для выхода. Нажмите любую клавишу для того, что бы начать заново.");
- return (Console.ReadKey().Key == ConsoleKey.Escape);
- }
- private void TakeCards()
- {
- bool isContinueTake = true;
- while (isContinueTake)
- {
- Console.WriteLine("Что бы взять карту нажмите 1, что бы выйти, нажмите 2.");
- switch (Console.ReadLine())
- {
- case "1":
- _player.AddCard(_cardDeck.GetRandomCard());
- break;
- case "2":
- isContinueTake = false;
- break;
- }
- if (_cardDeck.IsEmpty == true)
- {
- isContinueTake = false;
- Console.WriteLine("Карты в колоде закончились.");
- }
- Console.Clear();
- }
- }
- private int ChooseDeckSize()
- {
- int sizeSmallDeck = Enum.GetNames(typeof(CardSuit)).Length * (int)CardValue.Six;
- int sizeBigDeck = Enum.GetNames(typeof(CardSuit)).Length * (int)CardValue.Two;
- bool isChoosed = false;
- while (isChoosed == false)
- {
- Console.WriteLine($"Выберите размер колоды:" +
- $"\n1. {sizeSmallDeck} карт." +
- $"\n2. {sizeBigDeck} карты.");
- switch (Console.ReadLine())
- {
- case "1":
- return sizeSmallDeck;
- case "2":
- return sizeSmallDeck;
- }
- Console.Clear();
- }
- return 0;
- }
- }
- class Player
- {
- private List<Card> _cards;
- public Player()
- {
- _cards = new List<Card>();
- }
- public void AddCard(Card card)
- {
- _cards.Add(card);
- Console.WriteLine("Вы взяли карту.");
- }
- public void ShowCards()
- {
- Console.WriteLine("У вас следующие карты:");
- foreach (Card card in _cards)
- {
- card.ShowInfo();
- }
- }
- }
- class CardDeck
- {
- private List<Card> _cards;
- public CardDeck(int countCards)
- {
- _cards = new List<Card>();
- Create(countCards);
- }
- public int CountCards => _cards.Count;
- public bool IsEmpty => CountCards < 1;
- public Card GetRandomCard()
- {
- Random random = new Random();
- Card card = _cards[random.Next(CountCards)];
- _cards.Remove(card);
- return card;
- }
- private void Create(int countCards)
- {
- int countSuit = Enum.GetNames(typeof(CardSuit)).Length;
- int countCardsInEverySuit = countCards / countSuit;
- for (int i = 1; i <= countCardsInEverySuit; i++)
- {
- for (int j = 1; j <= countSuit; j++)
- {
- _cards.Add(new Card((CardSuit)j, (CardValue)i));
- }
- }
- }
- }
- class Card
- {
- private CardSuit _suit;
- private CardValue _value;
- public Card(CardSuit suit, CardValue value)
- {
- _suit = suit;
- _value = value;
- }
- public void ShowInfo()
- {
- Console.WriteLine(_value + " " + _suit);
- }
- }
- enum CardValue
- {
- Ace = 1,
- King,
- Queen,
- Jack,
- Ten,
- Nine,
- Eight,
- Seven,
- Six,
- Five,
- Four,
- Three,
- Two
- }
- enum CardSuit
- {
- Hearts = 1,
- Spades,
- Diamonds,
- Clubs
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment