#AutoIt3Wrapper_Plugin_Funcs= LoadHRDat, AnalyzeHand #include "_CardList.au3" #include "_HandCategories.au3" #include "_HandStrength.au3" #include #include #include ;Initialize Analyze Plugin ;~ $handEval = PluginOpen(@ScriptDir & "\handEval.dll") Global $handEval = DllOpen(@ScriptDir & "\handEval.dll") If @error Then FileWrite("c:\test.txt", "Error:" & @error) Else FileWrite("c:\test.txt", "No Error:" & @error) EndIf ;Initialize data structure ;~ $dat = LoadHRDat() Global $dat = DllCall($handEval, Int, 'LoadHRDat') Global $myHand[7] ;Initialize GUI $Form2 = GUICreate("Random Hand Evaluator", 200, 100, 197, 126) GUISetBkColor(0x808080) $DealButton = GUICtrlCreateButton("Deal New Hand", 30, 8, 140, 81, 0) GUISetState(@SW_SHOW) $k = 0 $Analysis = ":D" While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE ;~ PluginClose($handEval) DllClose($handEval) Exit Case $DealButton $begin = TimerInit() $myHand = DealAHandOptimum() ;~ $Analysis = AnalyzeHand($myHand[0], $myHand[1], $myHand[2], $myHand[3], $myHand[4], $myHand[5], $myHand[6]) $Analysis = DllCall($handEval, int, 'AnalyzeHand', int, $myHand[0], int, $myHand[1], int, $myHand[2], int, $myHand[3], int, $myHand[4], int, $myHand[5], int, $myHand[6]) $HandCategory = BitShift($Analysis, 12) $HandRankWithinCategory = BitAND($Analysis, 0x00000FFF) For $j = 8 To $HandCategory - 1 Step -1 ;~ For $j = 8 To $HandCategory Step -1 $k = $k + $Category[$j] Next $position = $k - $HandRankWithinCategory + 1 $dif = TimerDiff($begin) $HandString = $cardsList[$myHand[0] - 1] & ", " & $cardsList[$myHand[1] - 1] & ", " & $cardsList[$myHand[2] - 1] & ", " & $cardsList[$myHand[3] - 1] & ", " & $cardsList[$myHand[4] - 1] & ", " & $cardsList[$myHand[5] - 1] & ", " & $cardsList[$myHand[6] - 1] ;~ MsgBox(0, "1", $HandString & @CRLF & "Type of Hand:" & $HandRanksArray[$position-1][0] & @CRLF & "Best 5 Card Hand:" & $HandRanksArray[$position-1][2] & @CRLF & "Generated and evaluated Hand in :" & $dif & " milliseconds." & @CRLF & "Hand Strength:" & Round(100 * ($HandRankWithinCategory / ($Category[$HandCategory]))) & "%") MsgBox(0, "1", $HandString & @CRLF & "Type of Hand:" & $HandRanksArray[$position][0] & @CRLF & "Best 5 Card Hand:" & $HandRanksArray[$position][2] & @CRLF & "Generated and evaluated Hand in :" & $dif & " milliseconds." & @CRLF & "Hand Strength:" & Round(100 * ($HandRankWithinCategory / ($Category[$HandCategory - 1]))) & "%") $k = 0 EndSwitch WEnd Func DealAHandOptimum() Local $generatedHand[7] $generatedHand[0] = Random(1, 52, 1) $generatedHand[1] = Random(1, 52, 1) $generatedHand[2] = Random(1, 52, 1) $generatedHand[3] = Random(1, 52, 1) $generatedHand[4] = Random(1, 52, 1) $generatedHand[5] = Random(1, 52, 1) $generatedHand[6] = Random(1, 52, 1) If $generatedHand[1] = $generatedHand[0] Then While $generatedHand[1] = $generatedHand[0] $generatedHand[1] = Random(1, 52, 1) WEnd EndIf If $generatedHand[2] = $generatedHand[0] Or $generatedHand[2] = $generatedHand[1] Then While $generatedHand[2] = $generatedHand[0] Or $generatedHand[2] = $generatedHand[1] $generatedHand[2] = Random(1, 52, 1) WEnd EndIf If $generatedHand[3] = $generatedHand[0] Or $generatedHand[3] = $generatedHand[1] Or $generatedHand[3] = $generatedHand[2] Then While $generatedHand[3] = $generatedHand[0] Or $generatedHand[3] = $generatedHand[1] Or $generatedHand[3] = $generatedHand[2] $generatedHand[3] = Random(1, 52, 1) WEnd EndIf If $generatedHand[4] = $generatedHand[0] Or $generatedHand[4] = $generatedHand[1] Or $generatedHand[4] = $generatedHand[2] Or $generatedHand[4] = $generatedHand[3] Then While $generatedHand[4] = $generatedHand[0] Or $generatedHand[4] = $generatedHand[1] Or $generatedHand[4] = $generatedHand[2] Or $generatedHand[4] = $generatedHand[3] $generatedHand[4] = Random(1, 52, 1) WEnd EndIf If $generatedHand[5] = $generatedHand[0] Or $generatedHand[5] = $generatedHand[1] Or $generatedHand[5] = $generatedHand[2] Or $generatedHand[5] = $generatedHand[3] Or $generatedHand[5] = $generatedHand[4] Then While $generatedHand[5] = $generatedHand[0] Or $generatedHand[5] = $generatedHand[1] Or $generatedHand[5] = $generatedHand[2] Or $generatedHand[5] = $generatedHand[3] Or $generatedHand[5] = $generatedHand[4] $generatedHand[5] = Random(1, 52, 1) WEnd EndIf If $generatedHand[0] Or $generatedHand[6] = $generatedHand[1] Or $generatedHand[6] = $generatedHand[2] Or $generatedHand[6] = $generatedHand[3] Or $generatedHand[6] = $generatedHand[4] Or $generatedHand[6] = $generatedHand[5] Then While $generatedHand[6] = $generatedHand[0] Or $generatedHand[6] = $generatedHand[1] Or $generatedHand[6] = $generatedHand[2] Or $generatedHand[6] = $generatedHand[3] Or $generatedHand[6] = $generatedHand[4] Or $generatedHand[6] = $generatedHand[5] $generatedHand[6] = Random(1, 52, 1) WEnd EndIf Return $generatedHand EndFunc ;==>DealAHandOptimum