Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace CollectionsTest
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<int> cardsList = GetListOfCards(52);
- Shuffle(ref cardsList);
- Stack<int> cardsDeck = ListToStack(cardsList);
- Player playerA = new Player("Виктор");
- Player playerB = new Player("Василий");
- Console.WriteLine("{0} и {1}, добро пожаловать!", playerA.Name, playerB.Name);
- Console.WriteLine("Нажмите любую клавишу, чтобы начать игру!\n");
- Console.ReadKey(true);
- while (cardsDeck.Count > 0)
- {
- playerA.TakeCard(cardsDeck);
- playerB.TakeCard(cardsDeck);
- CompareCards(ref playerA, ref playerB);
- System.Threading.Thread.Sleep(2000);
- }
- Console.WriteLine("\n{0}", CheckWin(playerA, playerB));
- }
- private static string CheckWin(Player playerA, Player playerB)
- {
- return playerA.Points > playerB.Points ?
- string.Format("{0} победил!", playerA.Name) :
- playerA.Points < playerB.Points ?
- string.Format("{0} победил!", playerB.Name) :
- "Ничья!";
- }
- private static void CompareCards(ref Player playerA, ref Player playerB)
- {
- if(playerA.GetPlayerCard() > playerB.GetPlayerCard())
- {
- playerA.AddPoint();
- }
- else
- {
- playerB.AddPoint();
- }
- Console.WriteLine("Текущий счет {0}-{1}\t{2}-{3}\n", playerA.Name,
- playerA.Points, playerB.Name, playerB.Points);
- }
- private static List<int> GetListOfCards(int countOfCards)
- {
- List<int> cardsList = new List<int>();
- for (int i = 1; i < countOfCards + 1; i++)
- {
- cardsList.Add(i);
- }
- return cardsList;
- }
- private static void Shuffle(ref List<int> cardsList)
- {
- Random random = new Random();
- int n = cardsList.Count;
- int temp;
- while (n > 1)
- {
- n--;
- int k = random.Next(n + 1);
- temp = cardsList[k];
- cardsList[k] = cardsList[n];
- cardsList[n] = temp;
- }
- }
- private static Stack<int> ListToStack(List<int> cardsList)
- {
- Stack<int> cardsDeck = new Stack<int>();
- foreach(int card in cardsList)
- {
- cardsDeck.Push(card);
- }
- return cardsDeck;
- }
- }
- class Player
- {
- public int Points { get; private set; }
- public string Name { get; set; }
- private int _currentCard;
- public Player(string name)
- {
- Name = name;
- Points = 0;
- }
- public void TakeCard(Stack<int> cardsDeck)
- {
- _currentCard = cardsDeck.Pop();
- Console.WriteLine("{0} берет карту {1}", Name, _currentCard);
- }
- public int GetPlayerCard()
- {
- return _currentCard;
- }
- public void AddPoint()
- {
- Console.WriteLine("{0} получает одно очко!", Name);
- Points++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment