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
            }
        }
Пример #3
0
        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";
            }
        }
Пример #4
0
 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());
     }
 }
Пример #5
0
        public HandValue(HandEnum handEnum, IHand hand)
        {
            HandEnum = handEnum;
            Hand     = hand;

            Validate();
        }
Пример #6
0
        public int CompareTo(HandValue other)
        {
            if (HandEnum == other.HandEnum)
            {
                return(Hand.CompareTo(other.Hand));
            }

            return(HandEnum.CompareTo(other.HandEnum));
        }
Пример #7
0
        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);
        }
Пример #8
0
 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)
         {
         }
     }
 }
Пример #9
0
 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.");
     }
 }
Пример #10
0
        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;
            }
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
            }
        }
Пример #13
0
        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);
        }
Пример #14
0
        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;
        }