Ejemplo n.º 1
0
            void ShowCards()                                                                    // Вывод карт игроков и на столе
            {
                ConsoleGraphics.Clear(Color.Black);
                foreach (var player in players)
                {
                    player.ShowCards();
                }

                for (int i = 0; i < cards_on_the_table.Count; i++)
                {
                    ConsoleGraphics.DrawImage(cards_on_the_table[i].karta, 540, 15 + players[i].Position * 90, WidthCard, HeightCard);
                }
            }
Ejemplo n.º 2
0
 public void Run()                                                                   // Запуст игры
 {
     if (game_over)
     {
         return;
     }
     j = 0;
     for (int i = 0; i < MaxCard; i++)                                                // Раздаем карты игрокам
     {
         players[j++].Cards.Enqueue(cards[i]);
         if (j == players.Count)
         {
             j = 0;
         }
     }
     while (!game_over)                                                               // Цикл игры
     {
         ShowCards();
         for (int i = 0; i < players.Count; i++)                                     // Выводим из игры игрока у которого нет карт
         {
             if (players[i].Cards.Count == 0)
             {
                 change_position = true;
                 players.RemoveAt(i--);                                              // i-- Перемещаемся назад по списку чтобы не пропустить следующего,
             }                                                                       // у которого возможно нет карт
         }
         if (change_position)
         {
             for (int i = 0; i < players.Count; i++)
             {
                 players[i].Position = i;
             }
             change_position = false;
         }
         for (int i = 0; i < players.Count; i++)                                    // Игроки выкладывают карты на стол
         {
             cards_on_the_table.Add((Karta)players[i].Cards.Dequeue());
             System.Threading.Thread.Sleep(800);
             ShowCards();
         }
         System.Threading.Thread.Sleep(500);
         j = 0;
         for (int i = 1; i < cards_on_the_table.Count; i++)                          // Поиско самой большой карты
         {
             if (cards_on_the_table[j].weight_card < cards_on_the_table[i].weight_card)
             {
                 j             = i;
                 the_same_card = false;
             }
             else if (cards_on_the_table[j].weight_card == cards_on_the_table[i].weight_card)    // Если у игроков совпали карты
             {
                 the_same_card = true;
             }
         }
         Console.SetCursorPosition(30, players.Count * 8);
         Console.WriteLine("Карты забирает игрок: " + players[j].Name);
         foreach (Karta card in cards_on_the_table)                                  // Игрок у которого карта больше забирает карты
         {
             players[j].Cards.Enqueue(card);
         }
         cards_on_the_table.Clear();                                                 // Очистка стола
         if (the_same_card)                                                          // Если у игроков совпали карты то забирает тот игрок, который выложил карту первым
         {                                                                           // и становится в конец очереди, для уравновешивания шансов. К примеру:
             players.Add(players[j]);                                                // если игроки 1, 2, 3, 4 по очереди вылаживают карты и у игроков 1 и 3
             players.RemoveAt(j);                                                    // совпадают карты то игрок 1 забирает карты и становится в конец очереди,
         }                                                                           // тогда игроки будут выкладывать карты в следующем порядке 2, 3, 4, 1
         System.Threading.Thread.Sleep(1500);
         ShowCards();
         foreach (Player player in players)                                          // Проверка забрал ли один из игроков все карты
         {
             if (player.Cards.Count == MaxCard)
             {
                 game_over = true;
                 ConsoleGraphics.Clear(Color.Black);
                 player.Position = 0;
                 player.ShowCards();
                 Console.SetCursorPosition(0, 8);
                 Console.WriteLine("Игра окончена игру выиграл: " + player.Name);
             }
         }
     }
 }