Exemplo n.º 1
0
        private void CheckResults(Answer answer)
        {
            if (answer == Answer.NotTrust)
            {
                SendMessageToAllPlayers($"не верю {playersTable.GetCurrentPlayer().Name}");
            }
            else
            {
                SendMessageToAllPlayers($"верю {playersTable.GetCurrentPlayer().Name}");
            }
            SendPlayersDicesToAllPlayers();
            PlayerForServer loser = SearchLoser(answer);

            SendMessageToAllPlayers($"проиграл {loser.Name}");

            if (playersTable.DeleteDice(loser)) //если у игрока остались кости
            {
                playersTable.currentPlayer = playersTable.players.FindIndex(x => x == loser);
                NewRound($"{loser.Name}");
            }
            else //если у игрока не осталось костей
            {
                SendMessageToAllPlayers($"выбыл {loser.Name}");
                playersTable.Delete(loser.Name);

                if (playersTable.players.Count > 1)
                {
                    NewRound($"{playersTable.GetNextPlayer().Name}");
                }
                else
                {
                    SendMessageToAllPlayers($"выиграл {playersTable.players[0].Name}");
                }
            }
        }
Exemplo n.º 2
0
 public bool DeleteDice(PlayerForServer player)
 {
     if (player.DeleteDice() == true)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 3
0
        public void StartGame()
        {
            SendCountOfPlayersToAllPlayers();

            playersTable.SetNewDiceValues(); //задаём начальные значения костей
            SendPlayersDices();

            SendMessageToAllPlayers("игра началась");

            PlayerForServer player = playersTable.GetNextPlayer();

            SendMessageToAllPlayers($"ход {player.Name}");
        }
Exemplo n.º 4
0
        private void GameProcessing(string message, IPEndPoint ePoint)
        {
            string[] mass = message.Split(' ');
            if (mass[0].Equals("ставка"))
            {
                bool flag = false; //проверка выполнения условий ставки

                int newCountOfDices = Convert.ToInt32(mass[1]);
                int newValueOfDices = Convert.ToInt32(mass[2]);
                if (previousBetValueOfDices != 1 && newValueOfDices != 1)
                {
                    if (newCountOfDices > previousBetCountOfDices ||
                        newValueOfDices > previousBetValueOfDices && newCountOfDices == previousBetCountOfDices)
                    {
                        flag = true;
                    }
                }
                else if (previousBetValueOfDices == 1 && newValueOfDices == 1)
                {
                    if (newCountOfDices > previousBetCountOfDices)
                    {
                        flag = true;
                    }
                }
                else if (previousBetValueOfDices == 1 && newValueOfDices != 1)
                {
                    if (newCountOfDices > previousBetCountOfDices * 2)
                    {
                        flag = true;
                    }
                }
                else if (previousBetValueOfDices != 1 && newValueOfDices == 1)
                {
                    int shouldBeCountOfDices = previousBetCountOfDices / 2;
                    if (previousBetCountOfDices % 2 == 1)
                    {
                        shouldBeCountOfDices++;
                    }

                    if (newCountOfDices >= shouldBeCountOfDices)
                    {
                        flag = true;
                    }
                }
                else
                {
                    throw new Exception($"Пришла неверная ставка: {mass[1]} {mass[2]}");
                    //Console.WriteLine("Пришла неверная ставка");
                }

                if (flag == true) //если условия ставки выполнены, сообщаем ставку и передаём ход
                {
                    previousBetCountOfDices = Int32.Parse(mass[1]);
                    previousBetValueOfDices = Int32.Parse(mass[2]);

                    SendMessageToAllPlayers($"ставка {playersTable.GetCurrentPlayer().Name} {mass[1]} {mass[2]}");
                    PlayerForServer player = playersTable.GetNextPlayer();
                    SendMessageToAllPlayers($"ход {player.Name}");
                }
            }
            else if (mass[0].Equals("не")) //не верю
            {
                CheckResults(Answer.NotTrust);
            }
            else if (mass[0].Equals("верю"))
            {
                CheckResults(Answer.Trust);
            }
            else
            {
                throw new Exception("неверный формат сообщения серверу");
            }
        }