Advertisement
viktarb

Колода карт

Oct 13th, 2022 (edited)
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.77 KB | Gaming | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. class Program
  5. {
  6.     static void Main(string[] args)
  7.     {
  8.         Deck deck = new Deck();
  9.         Player player = new Player("Player 1");
  10.         bool isCorrectInput;
  11.  
  12.         Console.Write("Сколько раз игрок должен вытащить карту?(введите число): ");
  13.         string userInput = Console.ReadLine();
  14.         isCorrectInput = Int32.TryParse(userInput, out int countCards);
  15.  
  16.         if (isCorrectInput)
  17.         {
  18.             if (countCards != 0 && countCards > 0)
  19.             {
  20.                 deck.Shuffle();
  21.  
  22.                 for (int i = 0; i < countCards; i++)
  23.                 {
  24.                     player.TakeCard(deck.GiveCard());
  25.                 }
  26.             }
  27.             else
  28.             {
  29.                 Console.ForegroundColor = ConsoleColor.Red;
  30.                 Console.WriteLine("\aНекорректный ввод! Вы проиграли.");
  31.                 Console.ForegroundColor = ConsoleColor.White;
  32.             }
  33.         }
  34.         else
  35.         {
  36.             Console.ForegroundColor = ConsoleColor.Red;
  37.             Console.WriteLine("\a Нужно вводить число! Вы проиграли.");
  38.             Console.ForegroundColor = ConsoleColor.White;
  39.         }
  40.  
  41.         deck.Show();
  42.         player.ShowCards();
  43.         Console.ReadKey();
  44.     }
  45. }
  46.  
  47. class Card
  48. {
  49.     private string _suit;
  50.     private string _rank;
  51.  
  52.     public Card(string suit, string rank)
  53.     {
  54.         _suit = suit;
  55.         _rank = rank;
  56.     }
  57.  
  58.     public void Show()
  59.     {
  60.         Console.WriteLine($"Масть -  {_suit}, достоинство - {_rank}");
  61.     }
  62. }
  63.  
  64. class Deck
  65. {
  66.     private List<Card> _cards = new List<Card>();
  67.     private Random _random = new Random();
  68.  
  69.     public Deck()
  70.     {
  71.         List<string> _suit = new List<string>(new string[] { "Diamonds", "Spades", "Hearts", "Clubs" });
  72.         List<string> _rank = new List<string>((new string[] { "Ace", "Two", "Three", "Four", "Five", "Six",
  73.             "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" }));
  74.  
  75.         for (int i = 0; i < _suit.Count; i++)
  76.         {
  77.             for (int j = 0; j < _rank.Count; j++)
  78.             {
  79.                 _cards.Add(new Card(_suit[i], _rank[j]));
  80.             }
  81.         }
  82.     }
  83.  
  84.     public void Show()
  85.     {
  86.         Console.WriteLine("\nПоказываю всю колоду карт:");
  87.  
  88.         for (int i = 0; i < _cards.Count; i++)
  89.         {
  90.             Console.Write($"{i + 1} карта - ");
  91.             _cards[i].Show();
  92.         }
  93.     }
  94.  
  95.     public void Shuffle()
  96.     {
  97.         for (int i = 0; i < _cards.Count; i++)
  98.         {
  99.             int randomIndex = _random.Next(_cards.Count + 1 - i);
  100.             Card tempCard = _cards[i];
  101.             _cards[i] = _cards[randomIndex];
  102.             _cards[randomIndex] = tempCard;
  103.         }
  104.     }
  105.  
  106.     public Card GiveCard()
  107.     {
  108.         Card tempCard = null;
  109.  
  110.         if (_cards.Count > 0)
  111.         {
  112.             tempCard = _cards[0];
  113.             _cards.Remove(tempCard);
  114.         }
  115.         else
  116.         {
  117.             Console.WriteLine($"\aКарты в колоде закончились.");
  118.         }
  119.  
  120.         return tempCard;
  121.     }
  122. }
  123.  
  124. class Player
  125. {
  126.     private List<Card> _cards = new List<Card>();
  127.     public string Name { get; private set; }
  128.  
  129.     public Player(string name)
  130.     {
  131.         Name = name;
  132.     }
  133.  
  134.     public void TakeCard(Card card)
  135.     {
  136.         _cards.Add(card);
  137.     }
  138.  
  139.     public void ShowCards()
  140.     {
  141.         Console.WriteLine("\nПоказываю карты игрока:");
  142.  
  143.         for (int i = 0; i < _cards.Count; i++)
  144.         {
  145.             Console.Write($"{i + 1} карта: ");
  146.             _cards[i].Show();
  147.         }
  148.     }
  149. }
Tags: ijunior
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement