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(); }
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); } }
private void LoadSettings() { if (rbSix.Checked) { _settings = AppSettingsManager.Load("six"); Init(_settings); } if (rbNine.Checked) { _settings = AppSettingsManager.Load("nine"); Init(_settings); } }
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 }); } }
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 }); } }
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 // }); //} }
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; } }
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(); }
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); }
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); }
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) { } }