Nemo048

Cards

Jul 27th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.92 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace CollectionsTest
  10. {
  11.     class Program
  12.     {
  13.         static void Main(string[] args)
  14.         {
  15.             List<int> cardsList = GetListOfCards(52);
  16.  
  17.             Shuffle(ref cardsList);
  18.  
  19.             Stack<int> cardsDeck = ListToStack(cardsList);
  20.  
  21.             Player playerA = new Player("Виктор");
  22.             Player playerB = new Player("Василий");
  23.  
  24.             Console.WriteLine("{0} и {1}, добро пожаловать!", playerA.Name, playerB.Name);
  25.             Console.WriteLine("Нажмите любую клавишу, чтобы начать игру!\n");
  26.             Console.ReadKey(true);
  27.  
  28.             while (cardsDeck.Count > 0)
  29.             {
  30.                 playerA.TakeCard(cardsDeck);
  31.                 playerB.TakeCard(cardsDeck);
  32.  
  33.                 CompareCards(ref playerA, ref playerB);
  34.                 System.Threading.Thread.Sleep(2000);
  35.             }
  36.  
  37.             Console.WriteLine("\n{0}", CheckWin(playerA, playerB));
  38.         }
  39.  
  40.         private static string CheckWin(Player playerA, Player playerB)
  41.         {
  42.             return playerA.Points > playerB.Points ?
  43.                     string.Format("{0} победил!", playerA.Name) :
  44.                     playerA.Points < playerB.Points ?
  45.                     string.Format("{0} победил!", playerB.Name) :
  46.                     "Ничья!";
  47.         }
  48.  
  49.         private static void CompareCards(ref Player playerA, ref Player playerB)
  50.         {
  51.             if(playerA.GetPlayerCard() > playerB.GetPlayerCard())
  52.             {
  53.                 playerA.AddPoint();
  54.             }
  55.             else
  56.             {
  57.                 playerB.AddPoint();
  58.             }
  59.  
  60.             Console.WriteLine("Текущий счет {0}-{1}\t{2}-{3}\n", playerA.Name,
  61.                                 playerA.Points, playerB.Name, playerB.Points);
  62.         }
  63.  
  64.         private static List<int> GetListOfCards(int countOfCards)
  65.         {
  66.             List<int> cardsList = new List<int>();
  67.  
  68.             for (int i = 1; i < countOfCards + 1; i++)
  69.             {
  70.                 cardsList.Add(i);
  71.             }
  72.  
  73.             return cardsList;
  74.         }
  75.  
  76.         private static void Shuffle(ref List<int> cardsList)
  77.         {
  78.             Random random = new Random();
  79.             int n = cardsList.Count;
  80.             int temp;
  81.             while (n > 1)
  82.             {
  83.                 n--;
  84.                 int k = random.Next(n + 1);
  85.                 temp = cardsList[k];
  86.                 cardsList[k] = cardsList[n];
  87.                 cardsList[n] = temp;
  88.             }
  89.         }
  90.  
  91.         private static Stack<int> ListToStack(List<int> cardsList)
  92.         {
  93.             Stack<int> cardsDeck = new Stack<int>();
  94.  
  95.             foreach(int card in cardsList)
  96.             {
  97.                 cardsDeck.Push(card);
  98.             }
  99.  
  100.             return cardsDeck;
  101.         }
  102.     }
  103.  
  104.     class Player
  105.     {
  106.         public int Points { get; private set; }
  107.         public string Name { get; set; }
  108.         private int _currentCard;
  109.  
  110.         public Player(string name)
  111.         {
  112.             Name = name;
  113.             Points = 0;
  114.         }
  115.  
  116.         public void TakeCard(Stack<int> cardsDeck)
  117.         {
  118.             _currentCard = cardsDeck.Pop();
  119.             Console.WriteLine("{0} берет карту {1}", Name, _currentCard);
  120.         }
  121.  
  122.         public int GetPlayerCard()
  123.         {
  124.             return _currentCard;
  125.         }
  126.  
  127.         public void AddPoint()
  128.         {
  129.             Console.WriteLine("{0} получает одно очко!", Name);
  130.             Points++;
  131.         }
  132.  
  133.     }
  134. }
Advertisement
Add Comment
Please, Sign In to add comment