Advertisement
VitalyD

Untitled

May 18th, 2018
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.35 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApp16
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Random random = new Random();
  14.             int wins = 0;
  15.             string currentWinner = "";
  16.  
  17.             Dictionary<string, Stack<int>> players = new Dictionary<string, Stack<int>>();
  18.  
  19.             players.Add("Player1", new Stack<int>());
  20.             players.Add("Player2", new Stack<int>());
  21.             players.Add("Player3", new Stack<int>());
  22.             players.Add("Player4", new Stack<int>());
  23.  
  24.             int[] winsCount = new int[players.Count];
  25.  
  26.             while (wins < 5)
  27.             {
  28.                 int[] cards = new int[4 * 10];
  29.                 for (int i = 0; i <= 9; i++)
  30.                 {
  31.                     for (int j = 0; j < 4; j++)
  32.                     {
  33.                         cards[i * 4 + j] = i + 1;
  34.                     }
  35.                 }
  36.                 random.Shuffle(cards);
  37.  
  38.                 Queue<int> cardsOnTable = new Queue<int>(cards);
  39.  
  40.                 while (cardsOnTable.Count >= 3)
  41.                 {
  42.                     Console.WriteLine("Раздал карты...");
  43.  
  44.                     string droppedPlayer = players.Keys.Skip(random.Next(0, players.Keys.Count - 1)).First();
  45.                     if (players[droppedPlayer].Count > 0)
  46.                     {
  47.                         Console.WriteLine($"Игрок {droppedPlayer} сбросил карту");
  48.                         players[droppedPlayer].Pop();
  49.                     }
  50.  
  51.                     Console.WriteLine("Карты на столе:");
  52.                     foreach (var card in cardsOnTable)
  53.                     {
  54.                         Console.Write($"{card},");
  55.                     }
  56.                     Console.WriteLine();
  57.                     foreach (var player in players.Keys)
  58.                     {
  59.                         players[player].Push(cardsOnTable.Dequeue());
  60.                     }
  61.                     DrawPlayers(players);
  62.                     Console.ReadLine();
  63.                 }
  64.  
  65.                 string res = DrawMax(players);
  66.                 if (wins == 0 && res != currentWinner)
  67.                 {
  68.                     wins++;
  69.                     currentWinner = res;
  70.                 }
  71.                 else if (wins != 0 && res != currentWinner)
  72.                 {
  73.                     wins = 0;
  74.                     currentWinner = res;
  75.                     wins++;
  76.                 }
  77.                 else if (wins != 0 && res == currentWinner)
  78.                 {
  79.                     wins++;
  80.                 }
  81.  
  82.                 Console.WriteLine("Колода закончилась. Победил {0}, он выйграл {1} раз", currentWinner, wins);
  83.  
  84.                 foreach (var player in players.Keys)
  85.                 {
  86.                     players[player].Clear();
  87.                 }
  88.                 Console.ReadLine();
  89.                 Console.Clear();
  90.             }
  91.         }
  92.  
  93.         static void DrawPlayers(Dictionary<string, Stack<int>> players)
  94.         {
  95.             foreach (var player in players.Keys)
  96.             {
  97.                 Console.WriteLine($"{player} - {CardSum(players[player])}");
  98.             }
  99.         }
  100.  
  101.         static string DrawMax(Dictionary<string, Stack<int>> players)
  102.         {
  103.             string winPlayer = "";
  104.             int max = 0;
  105.             foreach (var player in players.Keys)
  106.             {
  107.                 if (CardSum(players[player]) > max)
  108.                 {
  109.                     max = CardSum(players[player]);
  110.                     winPlayer = player;
  111.                 }
  112.             }
  113.             return winPlayer;
  114.         }
  115.  
  116.         static int CardSum(Stack<int> cards)
  117.         {
  118.             int sum = 0;
  119.             foreach (var card in cards)
  120.             {
  121.                 sum += card;
  122.             }
  123.             return sum;
  124.         }
  125.     }
  126.  
  127.     static class RandomExtensions
  128.     {
  129.         public static void Shuffle<T>(this Random rng, T[] array)
  130.         {
  131.             int n = array.Length;
  132.             while (n > 1)
  133.             {
  134.                 int k = rng.Next(n--);
  135.                 T temp = array[n];
  136.                 array[n] = array[k];
  137.                 array[k] = temp;
  138.             }
  139.         }
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement