Пример #1
0
        public void PlayerBet(int _idPlayer, int _rate)
        {
            Client player = GetPlayerById(_idPlayer);

            if (_idPlayer != idActivePlayer)
            {
                Console.WriteLine($"Ne tot igrok poxodil");
                return;
            }

            //делаем проверки на сделанную ставку
            if (_rate == -1) //игрок упал
            {
                //PlayerFold(_idPlayer);
                Console.WriteLine("делаем проверки на сделанную ставку");
                player.playerStatus = PlayerStatus.fold;
                ServerSend.PlayerStatus(_idPlayer, PlayerStatus.fold);

                return;
            }


            if (player.money < _rate) //--досточно ли денег на счету пользователя
            {
                Console.WriteLine("досточно ли денег на счету пользователя");
                //send денег на счету мало
                return;
            }



            if (sumBet > _rate + player.sumBetRound)  //--ставка меньше чем минимальная ставка на этом кону
            {
                Console.WriteLine("ставка меньше чем минимальная ставка на этом кону");
                //send маленькая ставка
                return;
            }

            player.money       -= _rate;        // списываем деньги со счета игрока
            bank               += _rate;        // добавляем в банк
            player.sumBetRound += _rate;        // добавляем в общий котел игрока (суммарно сколько он поставил за раунд)

            //TODO тут нужно сложнее. минимальная ставка может быть меньше!!! нужно делать проверку по суммарнной ставке пользователя за раунд
            if (sumBet > player.sumBetRound)
            {
                sumBet = player.sumBetRound;  //минимальная ставка равна текущей ставке
            }

            player.isBetTemp = true;



            //отправляем всем игрокам уведомление что игрок сделал ставку
            ServerSend.PlayerBet(_idPlayer, _rate);

            //если все сделали одинаковую ставку. то выкладываем карты и активным игроком становится первый в списке
            if (CheckRound())
            {
                // Console.WriteLine("ALL BET!!! next round");
                NextRound();

                int colCardSend = 1;

                switch (stage)
                {
                case Stage.flop:
                    colCardSend = 3;
                    stage       = Stage.turn;
                    break;

                case Stage.turn:
                    stage = Stage.river;
                    break;

                case Stage.river:
                    stage = Stage.lastBet;
                    break;

                case Stage.lastBet:
                    ServerSend.WinResult("aaa");
                    gameStatus = GameStatus.start;
                    return;
                }

                for (int i = 0; i < colCardSend; i++)
                {
                    Card card = deck.GetNextCard();
                    ServerSend.CardOnDeck(card);
                }
            }

            //в противном случае
            NextActivePlayer();                     //ищем следующего игрока
            ServerSend.ActivPlayer(idActivePlayer); //говорим всем id следующего игрока
        }