Advertisement
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 ConsoleApp16
- {
- class Program
- {
- static void Main(string[] args)
- {
- Random random = new Random();
- int wins = 0;
- string currentWinner = "";
- Dictionary<string, Stack<int>> players = new Dictionary<string, Stack<int>>();
- players.Add("Player1", new Stack<int>());
- players.Add("Player2", new Stack<int>());
- players.Add("Player3", new Stack<int>());
- players.Add("Player4", new Stack<int>());
- int[] winsCount = new int[players.Count];
- while (wins < 5)
- {
- int[] cards = new int[4 * 10];
- for (int i = 0; i <= 9; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- cards[i * 4 + j] = i + 1;
- }
- }
- random.Shuffle(cards);
- Queue<int> cardsOnTable = new Queue<int>(cards);
- while (cardsOnTable.Count >= 3)
- {
- Console.WriteLine("Раздал карты...");
- string droppedPlayer = players.Keys.Skip(random.Next(0, players.Keys.Count - 1)).First();
- if (players[droppedPlayer].Count > 0)
- {
- Console.WriteLine($"Игрок {droppedPlayer} сбросил карту");
- players[droppedPlayer].Pop();
- }
- Console.WriteLine("Карты на столе:");
- foreach (var card in cardsOnTable)
- {
- Console.Write($"{card},");
- }
- Console.WriteLine();
- foreach (var player in players.Keys)
- {
- players[player].Push(cardsOnTable.Dequeue());
- }
- DrawPlayers(players);
- Console.ReadLine();
- }
- string res = DrawMax(players);
- if (wins == 0 && res != currentWinner)
- {
- wins++;
- currentWinner = res;
- }
- else if (wins != 0 && res != currentWinner)
- {
- wins = 0;
- currentWinner = res;
- wins++;
- }
- else if (wins != 0 && res == currentWinner)
- {
- wins++;
- }
- Console.WriteLine("Колода закончилась. Победил {0}, он выйграл {1} раз", currentWinner, wins);
- foreach (var player in players.Keys)
- {
- players[player].Clear();
- }
- Console.ReadLine();
- Console.Clear();
- }
- }
- static void DrawPlayers(Dictionary<string, Stack<int>> players)
- {
- foreach (var player in players.Keys)
- {
- Console.WriteLine($"{player} - {CardSum(players[player])}");
- }
- }
- static string DrawMax(Dictionary<string, Stack<int>> players)
- {
- string winPlayer = "";
- int max = 0;
- foreach (var player in players.Keys)
- {
- if (CardSum(players[player]) > max)
- {
- max = CardSum(players[player]);
- winPlayer = player;
- }
- }
- return winPlayer;
- }
- static int CardSum(Stack<int> cards)
- {
- int sum = 0;
- foreach (var card in cards)
- {
- sum += card;
- }
- return sum;
- }
- }
- static class RandomExtensions
- {
- public static void Shuffle<T>(this Random rng, T[] array)
- {
- int n = array.Length;
- while (n > 1)
- {
- int k = rng.Next(n--);
- T temp = array[n];
- array[n] = array[k];
- array[k] = temp;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement