public HandShapeModel(int hogSize, HandEnum type) { switch (type) { case HandEnum.Right: hogRight = new float[hogSize]; break; case HandEnum.Left: hogLeft = new float[hogSize]; break; case HandEnum.Both: hogRight = new float[hogSize]; hogLeft = new float[hogSize]; break; case HandEnum.Intersect: hogRight = new float[hogSize]; break; case HandEnum.None: break; default: break; } this.type = type; skeletonData = ""; for (int i = 0; i < 42; i++) { skeletonData += ",NULL"; } }
public static double ProbabilityForHand(HandEnum hand) { switch (hand) { case HandEnum.OnePair: return(0.43832255); case HandEnum.TwoPairs: return(0.23495536); case HandEnum.ThreeOfAKind: return(0.04829870); case HandEnum.Straight: return(0.04619382); case HandEnum.Flush: return(0.03025494); case HandEnum.FullHouse: return(0.02596102); case HandEnum.FourOfAKind: return(0.00168067); case HandEnum.StraightFlush: return(0.00027851); case HandEnum.RoyalFlush: return(0.00003232); default: return(0.17411920); // Propability for "high card" as default } }
public void Set(string taskId, HandEnum handEnum) { try { if (handEnum == HandEnum.UPLOAD) { Log.WriteLog("Release semophore UPLOAD"); if (!_productSemaphore[taskId].WaitOne(0)) { _productSemaphore[taskId].Release(); } } else if (handEnum == HandEnum.LOAD) { Log.WriteLog("Release semophore Load"); if (!_customSemphore[taskId].WaitOne(0)) { _customSemphore[taskId].Release(); } } } catch (Exception ex) { Log.WriteLog("Release semophore:" + handEnum.ToString() + ex.ToString()); } }
public HandValue(HandEnum handEnum, IHand hand) { HandEnum = handEnum; Hand = hand; Validate(); }
public int CompareTo(HandValue other) { if (HandEnum == other.HandEnum) { return(Hand.CompareTo(other.Hand)); } return(HandEnum.CompareTo(other.HandEnum)); }
private void btnNextHand_Click(object sender, EventArgs e) { dealNextHand(); dealFlop(); dealTurn(); dealRiver(); recordHand(); clsEvaluateHand playerHandEvaluator = new clsEvaluateHand(seat1.Hand, board); HandEnum playerHandValue = playerHandEvaluator.EvaluateHand(); lblSeat1HandValue.Text = playerHandEvaluator.getHandValueText(playerHandValue); }
public void ChangeValueIsStop(string taskId, HandEnum handEnum) { if (IsStopDic.ContainsKey(taskId)) { try { Log.WriteLog("Change IsStop to true"); IsStopDic[taskId] = true; //放开等待锁 MemoryCache.Instence().Set(taskId, handEnum); } catch (Exception ex) { } } }
public string getHandValueText(HandEnum handInput) { if (handInput == HandEnum.HighCard) { return("High Card"); } else if (handInput == HandEnum.Pair) { return("Pair"); } else if (handInput == HandEnum.TwoPair) { return("Two Pair"); } else if (handInput == HandEnum.ThreeOfAKind) { return("Three of a Kind"); } else if (handInput == HandEnum.Straight) { return("Straight"); } else if (handInput == HandEnum.FullHouse) { return("Full House"); } else if (handInput == HandEnum.FourOfAKind) { return("Four of a Kind"); } else if (handInput == HandEnum.StraightFlush) { return("Straight Flush"); } else if (handInput == HandEnum.RoyalFlush) { return("Royal Flush"); } else { return("error."); } }
private void DrawHand(MCvBox2D rect, Image<Bgr, Byte> image, HandEnum handEnum) { System.Drawing.Point[] points = rect.GetVertices().Select(x => x.ToPoint()).ToArray(); DrawPoly(points, image, new MCvScalar(0, 0, 255)); Point center = rect.center.ToPoint(); DrawPoint(image, center, new MCvScalar(255, 0, 0)); if (handEnum == HandEnum.Right) { RightHandCenter = center; } if (handEnum == HandEnum.Left) { LeftHandCenter = center; } if (handEnum == HandEnum.Intersect) { RightHandCenter = center; } }
private void dealSingleHand() { //Deal the hand gameDeck.shuffleDeck(); //shuffle the deck board.clearCommunityCards(); dealNextHand(); dealFlop(); dealTurn(); dealRiver(); clsEvaluateHand playerHandEvaluator = new clsEvaluateHand(testSeat.Hand, board); HandEnum playerHandValue = playerHandEvaluator.EvaluateHand(); handValue = playerHandValue.ToString(); int numericHandValue = determineNumbericHandValue(handValue); //create and add current hand object to the list clsHandEvalTest currentHandList = new clsHandEvalTest(pocketCard1, pocketCard2, boardCard1, boardCard2, boardCard3, boardCard4, boardCard5, handValue, numericHandValue); //create the hand object handsList.Add(currentHandList); }
public static int CalculateBet(HandEnum hand, int cash) { switch (hand) { case HandEnum.RoyalFlush: case HandEnum.StraightFlush: case HandEnum.FourOfAKind: case HandEnum.FullHouse: case HandEnum.Flush: case HandEnum.Straight: return(cash); case HandEnum.ThreeOfAKind: case HandEnum.TwoPairs: return(cash / 2); case HandEnum.OnePair: return(cash / 4); default: return(cash / 20); } }
private void btnCustomHand_Click(object sender, EventArgs e) { /* * //Deal the hand * gameDeck.shuffleDeck(); //shuffle the deck * board.clearCommunityCards(); * * dealNextHand(); * dealFlop(); * dealTurn(); * dealRiver(); */ //Must convert from pip input to numeric form which the HandEvaluator can work with string pocketCard1 = txtPC1.Text.ToString(); string pocketCard2 = txtPC2.Text.ToString(); string boardCard1 = txtBC1.Text.ToString(); string boardCard2 = txtBC2.Text.ToString(); string boardCard3 = txtBC3.Text.ToString(); string boardCard4 = txtBC4.Text.ToString(); string boardCard5 = txtBC5.Text.ToString(); int numPocketCard1 = clsCardDeck.convertPipToNumeric(pocketCard1); int numPocketCard2 = clsCardDeck.convertPipToNumeric(pocketCard2); int numBoardCard1 = clsCardDeck.convertPipToNumeric(boardCard1); int numBoardCard2 = clsCardDeck.convertPipToNumeric(boardCard2); int numBoardCard3 = clsCardDeck.convertPipToNumeric(boardCard3); int numBoardCard4 = clsCardDeck.convertPipToNumeric(boardCard4); int numBoardCard5 = clsCardDeck.convertPipToNumeric(boardCard5); //should be converted at this point //Now populate the seats and board with those values testSeat.Hand.Card1 = numPocketCard1; testSeat.Hand.Card2 = numPocketCard2; board.FirstCard = numBoardCard1; board.SecondCard = numBoardCard2; board.ThirdCard = numBoardCard3; board.FourthCard = numBoardCard4; board.FifthCard = numBoardCard5; board.setCommunityCardsToFive(); //required since flop, turn, and river increase community cards clsEvaluateHand playerHandEvaluator = new clsEvaluateHand(testSeat.Hand, board); HandEnum playerHandValue = playerHandEvaluator.EvaluateHand(); handValue = playerHandValue.ToString(); int numericHandValue = determineNumbericHandValue(handValue); //create and add current hand object to the list clsHandEvalTest currentHandList = new clsHandEvalTest(pocketCard1, pocketCard2, boardCard1, boardCard2, boardCard3, boardCard4, boardCard5, handValue, numericHandValue); //create the hand object handsList.Add(currentHandList); //send the datalist handsDataCounter = new clsHandsData(handsList); //print results of custom hand to grid printResultsToDataGridView(); updateRTBHandsData(handsDataCounter); }
private MCvBox2D SplitHand(MCvBox2D rect, HandEnum handEnum, PointF Elbow2HandVector) { if (handEnum == HandEnum.Both || handEnum == HandEnum.Intersect) { return new MCvBox2D(rect.center, rect.MinAreaRect().Size, 0); } PointF[] pl = rect.GetVertices(); Point[] splittedHands = new Point[4]; //find angle of long edge PointF startP = pl[1]; PointF shortP = pl[0]; PointF longP = pl[2]; PointF ap1 = new PointF(); PointF ap2 = new PointF(); if (pl[0].DistanceTo(startP) > pl[2].DistanceTo(startP)) { shortP = pl[2]; longP = pl[0]; } SizeF size = new SizeF(); size.Width = shortP.DistanceTo(startP); size.Height = longP.DistanceTo(startP); PointF shortEdge = new PointF(shortP.X - startP.X, shortP.Y - startP.Y); float t_angle = (float)(Math.Atan(shortEdge.Tan())*180/Math.PI); MCvBox2D box = new MCvBox2D(); box.size = size; box.center = pl.GetCenter(); float longDis = longP.DistanceTo(startP); float shortDis = shortP.DistanceTo(startP); // x and long edge slope float longslope = Math.Abs(longP.X - startP.X) / longDis; float min = float.MaxValue; float factor = Math.Max(Math.Abs(longP.Y - startP.Y) / longDis, Math.Abs(longP.X - startP.X) / longDis); int TransformEnd = Convert.ToInt32(factor * end); int TransformBegin = Convert.ToInt32(factor * begin); //Console.WriteLine(TransformBegin); //Console.WriteLine(TransformEnd); // > 45 if (longslope < 0.707)//vert { // point up if (Elbow2HandVector.Y <= 0) { box.angle = t_angle; startP = pl.OrderBy((x => x.Y)).First(); } else { box.angle = t_angle + 180; startP = pl.OrderByDescending((x => x.Y)).First(); } if (longDis < minLength) { return box; } pl = pl.OrderBy(x => x.DistanceTo(startP)).ToArray(); shortP = pl[1]; longP = pl[2]; for (int y = TransformBegin; y < Convert.ToInt32(Math.Abs(longP.Y - startP.Y)) && Math.Abs(y) < TransformEnd; y++) { PointF p1 = InterPolateP(startP, longP, y / Math.Abs(longP.Y - startP.Y)); PointF p2 = new PointF(p1.X + shortP.X - startP.X, p1.Y + shortP.Y - startP.Y); float dis = GetHandWidthBetween(p1, p2); if (dis < min) { min = dis; ap1 = p1; ap2 = p2; } } } else // horizontal { // point top for right hand if (t_angle <0) { if (handEnum == HandEnum.Right) { box.angle = t_angle; } else { box.angle = t_angle + 180; } } // point bottom for right hand else { if (handEnum == HandEnum.Right) { box.angle = t_angle - 180; } else { box.angle = t_angle; } } if (handEnum == HandEnum.Right) { startP = pl.OrderBy((x => x.X)).ToArray()[0]; } else if (handEnum == HandEnum.Left) { startP = pl.OrderByDescending((x => x.X)).ToArray()[0]; } if (longDis < minLength) { return box; } pl = pl.OrderBy(x => x.DistanceTo(startP)).ToArray(); shortP = pl[1]; longP = pl[2]; for (int X = TransformBegin; X < Convert.ToInt32(Math.Abs(longP.X - startP.X)) && Math.Abs(X) < TransformEnd; X++) { PointF p1 = InterPolateP(startP, longP, X / Math.Abs(longP.X - startP.X)); PointF p2 = new PointF(p1.X + shortP.X - startP.X, p1.Y + shortP.Y - startP.Y); float dis = GetHandWidthBetween(p1, p2); if (dis < min) { min = dis; ap1 = p1; ap2 = p2; } } } if (ap1 == null || ap1 == PointF.Empty) { return box; } splittedHands[0] = startP.ToPoint(); splittedHands[1] = ap1.ToPoint(); splittedHands[2] = ap2.ToPoint(); splittedHands[3] = shortP.ToPoint(); //Point lowP = p.OrderByDescending(x => x.Y).First(); //Point highP = p.OrderByDescending(x => x.DistanceTo(lowP)).First(); //Point widthP = p.OrderBy(x => x.TanWith(lowP)).First(); box.center = splittedHands.GetCenter(); box.size.Height = startP.DistanceTo(ap1); return box; }