示例#1
0
        public Table(int playerCount, AppSettings settings)
        {
            TotalRounds = 0;

            ButtonPlayerPrev = -999;
            _random = new Random();
            ShortButton1 = settings.ShortButtonRect1;
            ShortButton2 = settings.ShortButtonRect2;
            ShortButton3 = settings.ShortButtonRect3;
            ShortButton4 = settings.ShortButtonRect4;

            CardSuitRect = settings.CardSuitRect;
            CardRankRect = settings.CardRankRect;
            CardMinSize = (int)settings.MinCardSize;

            BetCounterPreFlop = 1;
            BetCounterFlop = 1;
            BetCounterTurn = 1;
            BetCounterRiver = 1;
            RaiseCounter = 0;

            PlayerActionCounter = 0;

            PlayerRects = new List<Rectangle>();
            PlayerFolds = new List<Rectangle>();
            ButtonRects = new List<Rectangle>();
            BetRects = new List<Rectangle>();

            Players = new PlayerCollection();
            DealerButtons = new List<bool>();
            PlayerBets = new List<PlayerBet>();

            MyBalance = new Player();
            Bank = new Bank();

            for (int i = 0; i < playerCount; i++)
            {
                Players.Add(new Player {Action = PlayerAction.Init});
            }

            for (int i = 0; i < playerCount; i++)
            {
                DealerButtons.Add(false);
            }

            for (int i = 0; i < playerCount; i++)
            {
                PlayerBets.Add(new PlayerBet());
            }

            _cardRecognizer = new CardRecognizer();
        }
示例#2
0
        private void btLoad_Click(object sender, EventArgs e)
        {
            if (rbSix.Checked)
            {
                _settings = AppSettingsManager.Load("six");
                InitUI(_settings);

            }
            if (rbNine.Checked)
            {
                _settings = AppSettingsManager.Load("nine");
                InitUI(_settings);
            }
        }
示例#3
0
        private void LoadSettings()
        {
            if (rbSix.Checked)
            {
                _settings = AppSettingsManager.Load("six");
                Init(_settings);

            }
            if (rbNine.Checked)
            {
                _settings = AppSettingsManager.Load("nine");
                Init(_settings);
            }
        }
示例#4
0
        private void InitPlayerRects(AppSettings _settings)
        {
            if (_table.Players.Count == 6)
            {
                _table.PlayerRects.Clear();
                _table.PlayerRects.AddRange(new[]
                {
                    _settings.Player1, _settings.Player2, _settings.Player3,
                    _settings.Player4, _settings.Player5, _settings.Player6
                });

                _table.PlayerFolds.Clear();
                _table.PlayerFolds.AddRange(new[]
                {
                    _settings.Fold1, _settings.Fold2, _settings.Fold3,
                    _settings.Fold4, _settings.Fold5, _settings.Fold6
                });
            }
            if (_table.Players.Count == 9)
            {
                _table.PlayerRects.Clear();
                _table.PlayerRects.AddRange(new[]
                {
                    _settings.Player1, _settings.Player2, _settings.Player3,
                    _settings.Player4, _settings.Player5, _settings.Player6,
                    _settings.Player7, _settings.Player8,
                    _settings.Player9
                });

                //TODO 9 players
                _table.PlayerFolds.Clear();
                _table.PlayerFolds.AddRange(new[]
                {
                    _settings.Fold1, _settings.Fold2, _settings.Fold3,
                    _settings.Fold4, _settings.Fold5, _settings.Fold6,
                    _settings.Fold7, _settings.Fold8, _settings.Fold9
                });
            }
        }
示例#5
0
 private void InitButtonRects(AppSettings _settings)
 {
     if (_table.DealerButtons.Count == 6)
     {
         _table.ButtonRects.Clear();
         _table.ButtonRects.AddRange(new[]
         {
             _settings.Button1, _settings.Button2, _settings.Button3,
             _settings.Button4, _settings.Button5, _settings.Button6
         });
     }
     if (_table.DealerButtons.Count == 9)
     {
         _table.ButtonRects.Clear();
         _table.ButtonRects.AddRange(new[]
         {
             _settings.Button1, _settings.Button2, _settings.Button3,
             _settings.Button4, _settings.Button5, _settings.Button6,
             _settings.Button7, _settings.Button8,
             _settings.Button9
         });
     }
 }
示例#6
0
 private void InitBetRects(AppSettings _settings)
 {
     if (_table.PlayerBets.Count == 6)
     {
         _table.BetRects.Clear();
         _table.BetRects.AddRange(new[]
         {
             _settings.Bet1, _settings.Bet2, _settings.Bet3,
             _settings.Bet4, _settings.Bet5, _settings.Bet6
         });
     }
     //TODO Bet fo 10 players
     //if (_table.DealerButtons.Count == 11)
     //{
     //    _table.ButtonRects.Clear();
     //    _table.ButtonRects.AddRange(new[]
     //    {
     //        _settings.Button1, _settings.Button2, _settings.Button3,
     //        _settings.Button4, _settings.Button5, _settings.Button6,
     //        _settings.Button7, _settings.Button8,
     //        _settings.Button9
     //    });
     //}
 }
示例#7
0
        private void Init(AppSettings settings)
        {
            if (settings.TimerInterval == 0)
                timer1.Interval = 1000;
            else
                timer1.Interval = settings.TimerInterval;

            tbDirTestFiles.Text = settings.TestFolder;

            if (File.Exists(settings.TemplatePlayersFile))
            {
                _playersTemplate = Bitmap.FromFile(settings.TemplatePlayersFile) as Bitmap;
            }
        }
示例#8
0
        private void InitUI(AppSettings settings)
        {
            tbFile.Text = settings.TemplateFile;

            tbBluff.Value = settings.BluffPercent;
            tbShortStackPercent.Value = settings.ShortStackPercent;

            lblAllCardsRect.Text = settings.AllCardsRect.ToString();

            lblTableArea.Text = settings.TableRect.ToString();

            lblMyCardsRect.Text = settings.MyCardsRect.ToString();

            lblTableWindow.Text = "WindowPoint = " + settings.WindowPoint;

            tbTimer.Text = settings.TimerInterval.ToString();

            if (File.Exists(settings.TemplatePlayersFile))
            {
                tbFilePlayers.Text = settings.TemplatePlayersFile;
            }

            tbMinBet.Value = settings.MinBet;

            tbWaitRoundLimit.Value = settings.WaitRoundLimit;

            tbPreFlopWaitRoundLimit.Value = settings.PreFlopWaitRoundLimit;

            lblPlayer1.Text = settings.Player1.ToString();
            lblPlayer2.Text = settings.Player2.ToString();
            lblPlayer3.Text = settings.Player3.ToString();
            lblPlayer4.Text = settings.Player4.ToString();
            lblPlayer5.Text = settings.Player5.ToString();
            lblPlayer6.Text = settings.Player6.ToString();
            lblPlayer7.Text = settings.Player7.ToString();
            lblPlayer8.Text = settings.Player8.ToString();
            lblPlayer9.Text = settings.Player9.ToString();

            lblButton1.Text = settings.Button1.ToString();
            lblButton2.Text = settings.Button2.ToString();
            lblButton3.Text = settings.Button3.ToString();
            lblButton4.Text = settings.Button4.ToString();
            lblButton5.Text = settings.Button5.ToString();
            lblButton6.Text = settings.Button6.ToString();
            lblButton7.Text = settings.Button7.ToString();
            lblButton8.Text = settings.Button8.ToString();
            lblButton9.Text = settings.Button9.ToString();

            lblShort1.Text = settings.ShortButtonRect1.ToString();
            lblShort2.Text = settings.ShortButtonRect2.ToString();
            lblShort3.Text = settings.ShortButtonRect3.ToString();
            lblShort4.Text = settings.ShortButtonRect4.ToString();

            lblMyBalance.Text = settings.BalanceRect.ToString();

            lblBankSize.Text = settings.BankSizeRect.ToString();
            lblCallRate.Text = settings.CallRateRect.ToString();

            cbRemoveDollarSign.CheckedChanged -= cbRemoveDollarSign_CheckedChanged;
            cbRemoveDollarSign.Checked = settings.RemoveDollar;
            cbRemoveDollarSign.CheckedChanged += cbRemoveDollarSign_CheckedChanged;

            lblBetInput.Text = settings.BetInputRect.ToString();

            lblFold.Text = settings.FoldRect.ToString();
            lblCheckCall.Text = settings.CheckCallRect.ToString();
            lblBetRaise.Text = settings.BetRaiseRect.ToString();

            lblBet1.Text = settings.Bet1.ToString();
            lblBet2.Text = settings.Bet2.ToString();
            lblBet3.Text = settings.Bet3.ToString();
            lblBet4.Text = settings.Bet4.ToString();
            lblBet5.Text = settings.Bet5.ToString();
            lblBet6.Text = settings.Bet6.ToString();

            nbBuyIn.Value = settings.BuyIn;
            tbTotalLimit.Value = settings.Limit;
            tbRebuyLevel.Value = settings.RebuyLevel;
            lblRaiseRate.Text = settings.RaiseRateRect.ToString();

            lblFold1.Text = settings.Fold1.ToString();
            lblFold2.Text = settings.Fold2.ToString();
            lblFold3.Text = settings.Fold3.ToString();
            lblFold4.Text = settings.Fold4.ToString();
            lblFold5.Text = settings.Fold5.ToString();
            lblFold6.Text = settings.Fold6.ToString();
            lblFold7.Text = settings.Fold7.ToString();
            lblFold8.Text = settings.Fold8.ToString();
            lblFold9.Text = settings.Fold9.ToString();

            lblResume.Text = settings.ResumeRect.ToString();
            lblPause.Text = settings.PauseRect.ToString();

            lblRectBuyInOk.Text = settings.RectBuyInOk.ToString();
            lblRectCancelTable.Text = settings.RectCancelTable.ToString();
            lblRectLeaveTableOk.Text = settings.RectLeaveTableOk.ToString();
            lblRectOpenTable.Text = settings.RectOpenTable.ToString();
            lblRectTableX.Text = settings.RectTableX.ToString();

            lblCardSuit.Text = settings.CardSuitRect.ToString();
            lblCardRank.Text = settings.CardRankRect.ToString();
            tbMinCardSize.Value = settings.MinCardSize;

            lblTxtResult.Text = settings.TxtResultRect.ToString();

            lblTotalSize.Text = settings.TotalSizeRect.ToString();
        }
示例#9
0
        public void RecognizeFromWin(AppSettings settings)
        {
            for (int i = 0; i < PlayerRects.Count; i++)
            {
                var playerRect = PlayerRects[i];

                if(playerRect == Rectangle.Empty)
                    continue;

                var bmpPl = GetAreaFromScreen(playerRect);

                var txt = _cardRecognizer.RecognizeText(bmpPl);

                Players[i].Txt = txt;
                Players[i].Image = bmpPl;

                if (PlayerFolds[i] != Rectangle.Empty)
                {
                    var bmpFl = GetAreaFromScreen(PlayerFolds[i]);
                    Players[i].IsFold = !_cardRecognizer.PlayerHasCards(bmpFl);
                }
            }

            //Ex.Report(new Exception(Players[0].Txt));

            Players[Players.Count - 1].IsMe = true;

            for (int i = 0; i < DealerButtons.Count; i++)
            {
                DealerButtons[i] = false;
            }

            for (int i = 0; i < ButtonRects.Count; i++)
            {
                var buttonRect = ButtonRects[i];
                if (buttonRect == Rectangle.Empty)
                    continue;

                var bmpPl = GetAreaFromScreen(buttonRect);

                if (_cardRecognizer.IsButton(bmpPl, null))
                    DealerButtons[i] = true;
            }

            //decimal lastMaxBet = 0;
            //for (int i = 0; i < BetRects.Count; i++)
            //{
            //    var betRect = BetRects[i];
            //    if (betRect == Rectangle.Empty)
            //        continue;

            //    var bmpPl = GetAreaFromScreen(betRect);
            //    var txt = _cardRecognizer.RecognizeText(bmpPl);

            //    PlayerBets[i].Txt = txt;
            //    PlayerBets[i].Image = bmpPl;
            //    PlayerBets[i].Parse(settings.RemoveDollar);
            //    PlayerBets[i].AnalyseBets(settings.MinBet, lastMaxBet);

            //    if (lastMaxBet < PlayerBets[i].CurrentBet)
            //        lastMaxBet = PlayerBets[i].CurrentBet;
            //}

            //PlayerBets[PlayerBets.Count - 1].IsMe = true;

            //TODO slower than by area
            //TableBmp = GetAreaFromScreen(TableArea);

            //MyCardsBmp = GetArea(TableBmp, MyCardsArea);
            //AllCardsBmp = GetArea(TableBmp, AllCardsArea);
            //ButtonsBmp = GetArea(TableBmp, ButtonsArea);

            if (settings.BalanceRect != Rectangle.Empty)
            {
                var bmpMy = GetAreaFromScreen(settings.BalanceRect);
                MyBalance.Txt = _cardRecognizer.RecognizeText(bmpMy);
                MyBalance.Image = bmpMy;
                MyBalance.Parse(settings.RemoveDollar);
            }

            RandomTableRect = settings.RandomTableRect;
            PauseRect = settings.PauseRect;
            ResumeRect = settings.ResumeRect;
            BuyIn = settings.BuyIn;

            RectBuyInOk = settings.RectBuyInOk;
            RectCancelTable = settings.RectCancelTable;
            RectLeaveTableOk = settings.RectLeaveTableOk;
            RectOpenTable = settings.RectOpenTable;
            RectTableX = settings.RectTableX;

            if (settings.TotalSizeRect != Rectangle.Empty)
            {
                var bmpTotal = GetAreaFromScreen(settings.TotalSizeRect);
                Bank.TotalStr = _cardRecognizer.RecognizeText(bmpTotal);
                Bank.TotalImg = bmpTotal;
            }

            if (settings.BankSizeRect != Rectangle.Empty)
            {
                var bmpBank = GetAreaFromScreen(settings.BankSizeRect);
                Bank.BankStr = _cardRecognizer.RecognizeText(bmpBank);
                Bank.BankImg = bmpBank;
                BankRect = settings.BankSizeRect;
            }

            if (settings.CallRateRect != Rectangle.Empty)
            {
                var bmpCall = GetAreaFromScreen(settings.CallRateRect);
                Bank.CallStr = _cardRecognizer.RecognizeTextSmall(bmpCall);
                Bank.CallImg = bmpCall;
            }

            if (settings.RaiseRateRect != Rectangle.Empty)
            {
                var bmpRaise = GetAreaFromScreen(settings.RaiseRateRect);
                Bank.RaiseStr = _cardRecognizer.RecognizeTextSmall(bmpRaise);
                Bank.RaiseImg = bmpRaise;
            }
            Bank.Parse(settings.RemoveDollar);

            MyCardsBmp = GetAreaFromScreen(settings.MyCardsRect);
            AllCardsBmp = GetAreaFromScreen(settings.AllCardsRect);

            var prevAllCards = AllCards;

            MyCards = RecogniseCard(MyCardsBmp);
            AllCards = RecogniseCard(AllCardsBmp);
            RecogniseButton(settings);
        }
示例#10
0
        public void RecognizeFromWholeBmp(Bitmap bmp, AppSettings settings)
        {
            for (int i = 0; i < PlayerRects.Count; i++)
            {
                var playerRect = PlayerRects[i];
                if (playerRect == Rectangle.Empty)
                    continue;

                var bmpPl = GetArea(bmp, playerRect);
                var txt = _cardRecognizer.RecognizeText(bmpPl);

                Players[i].Txt = txt;
                Players[i].Image = bmpPl;
                Players[i].Parse(settings.RemoveDollar);

                if (PlayerFolds[i] != Rectangle.Empty)
                {
                    var bmpFl = GetArea(bmp, PlayerFolds[i]);
                    Players[i].IsFold = !_cardRecognizer.PlayerHasCards(bmpFl);
                }
            }

            Players[Players.Count - 1].IsMe = true;

            for (int i = 0; i < DealerButtons.Count; i++)
            {
                DealerButtons[i] = false;
            }

            for (int i = 0; i < ButtonRects.Count; i++)
            {
                var buttonRect = ButtonRects[i];
                if (buttonRect == Rectangle.Empty)
                    continue;

                var bmpPl = GetArea(bmp, buttonRect);

                if (_cardRecognizer.IsButton(bmpPl, null))
                    DealerButtons[i] = true;
            }

            //TODO player bets
            //decimal lastMaxBet = 0;
            //for (int i = 0; i < BetRects.Count; i++)
            //{
            //    var betRect = BetRects[i];
            //    if (betRect == Rectangle.Empty)
            //        continue;

            //    var bmpPl = GetArea(bmp, betRect);
            //    var txt = _cardRecognizer.RecognizeText(bmpPl);

            //    txt = RecognizeBet(betRect, bmp, 23);

            //    int cnt = 0;
            //    while ((txt == "" || txt == "none") && cnt < 3)
            //    {
            //        txt = RecognizeBet(betRect, bmp, 23*i);
            //        cnt++;
            //    }

            //    cnt = 0;
            //    while ((txt == "" || txt == "none") && cnt < 3)
            //    {
            //        txt = RecognizeBet(betRect, bmp, - 23 * i);
            //        cnt++;
            //    }

            //    PlayerBets[i].Txt = txt;
            //    PlayerBets[i].Image = bmpPl;
            //    PlayerBets[i].Parse(settings.RemoveDollar);

            //    //PlayerBets[i].AnalyseBets(settings.MinBet, lastMaxBet);
            //    //if (lastMaxBet < PlayerBets[i].CurrentBet)
            //    //    lastMaxBet = PlayerBets[i].CurrentBet;
            //}

            //PlayerBets[PlayerBets.Count - 1].IsMe = true;

            if (settings.BalanceRect != Rectangle.Empty)
            {
                var bmpMy = GetArea(bmp, settings.BalanceRect);
                MyBalance.Txt = _cardRecognizer.RecognizeText(bmpMy);
                MyBalance.Image = bmpMy;
                MyBalance.Parse(settings.RemoveDollar);
            }

            RandomTableRect = settings.RandomTableRect;
            PauseRect = settings.PauseRect;
            ResumeRect = settings.ResumeRect;
            BuyIn = settings.BuyIn;

            RectBuyInOk = settings.RectBuyInOk;
            RectCancelTable = settings.RectCancelTable;
            RectLeaveTableOk = settings.RectLeaveTableOk;
            RectOpenTable = settings.RectOpenTable;
            RectTableX = settings.RectTableX;

            if (settings.BankSizeRect != Rectangle.Empty)
            {
                var bmpBank = GetArea(bmp, settings.BankSizeRect);
                Bank.BankStr = _cardRecognizer.RecognizeText(bmpBank);
                Bank.BankImg = bmpBank;
                BankRect = settings.BankSizeRect;
            }

            if (settings.CallRateRect != Rectangle.Empty)
            {
                var bmpCall = GetArea(bmp, settings.CallRateRect);
                Bank.CallStr = _cardRecognizer.RecognizeTextSmall(bmpCall);
                Bank.CallImg = bmpCall;
            }

            if (settings.RaiseRateRect != Rectangle.Empty)
            {
                var bmpRaise = GetArea(bmp, settings.RaiseRateRect);
                Bank.RaiseStr = _cardRecognizer.RecognizeTextSmall(bmpRaise);
                Bank.RaiseImg = bmpRaise;
            }

            Bank.Parse(settings.RemoveDollar);

            MyCardsBmp = GetArea(bmp, settings.MyCardsRect);
            AllCardsBmp = GetArea(bmp, settings.AllCardsRect);
            TableBmp = bmp;

            try
            {
                MyCards = _cardRecognizer.Recognize(MyCardsBmp, TempDir, 0, CardMinSize, CardSuitRect, CardRankRect);
            }
            catch (Exception ex)
            {
                MyCards = new CardCollection();
            }

            try
            {
                AllCards = _cardRecognizer.Recognize(AllCardsBmp, TempDir, 0, CardMinSize, CardSuitRect, CardRankRect);
            }
            catch (Exception ex)
            {
                AllCards = new CardCollection();
            }

            try
            {
                Buttons = new ButtonCollection();

                ButtonFoldBmp = GetArea(bmp, settings.FoldRect);
                ButtonCallCheckBmp = GetArea(bmp, settings.CheckCallRect);
                ButtonBetRaiseBmp = GetArea(bmp, settings.BetRaiseRect);

                Buttons.Add(_cardRecognizer.RecognizeOneButton(ButtonFoldBmp, settings.FoldRect, TempDir, 0));
                Buttons.Add(_cardRecognizer.RecognizeOneButton(ButtonCallCheckBmp, settings.CheckCallRect, TempDir, 0));
                Buttons.Add(_cardRecognizer.RecognizeOneButton(ButtonBetRaiseBmp, settings.BetRaiseRect, TempDir, 0));
            }
            catch (Exception ex)
            {
                Buttons = new ButtonCollection();
            }

            //var txtRestImg = GetArea(bmp, settings.TxtResultRect);
            //TxtResult = _cardRecognizer.RecognizeText2(txtRestImg, "", 0);
        }
示例#11
0
        public void RecogniseButton(AppSettings settings)
        {
            try
            {
                Buttons = new ButtonCollection();

                ButtonFoldBmp = GetAreaFromScreen(settings.FoldRect);
                ButtonCallCheckBmp = GetAreaFromScreen(settings.CheckCallRect);
                ButtonBetRaiseBmp = GetAreaFromScreen(settings.BetRaiseRect);

                Buttons.Add(_cardRecognizer.RecognizeOneButton(ButtonFoldBmp, settings.FoldRect, TempDir, 0));
                Buttons.Add(_cardRecognizer.RecognizeOneButton(ButtonCallCheckBmp, settings.CheckCallRect, TempDir, 0));
                Buttons.Add(_cardRecognizer.RecognizeOneButton(ButtonBetRaiseBmp, settings.BetRaiseRect, TempDir, 0));
            }
            catch (Exception ex)
            {

            }
        }