Irgendwie habe ich nicht alles vom Thema mitbekommen.
Aber als ich jetzt Poker gelesen habe, und Wertigkeit des Blattes, habe ich mal meinen alten Code rausgeholt.
Mit ihm kann über die 7 Karten (2+7) und deren Wert und Farbe eine einzelne Zahl als Wertigkeit des gesamten Blatts bestimmt werden.
Sry für den schlechten Code-Stil, aber der Code ist schon sehr alt, aber vllt ist er ja trotzdem noch nützlich.
Die Karten liegen in einem Array, die definition einer Karte ist oben angegegen.
Code: Alles auswählen
Global Dim Karte(6)
; $20 - 2
; $30 - 3
; $40 - 4
; $50 - 5
; $60 - 6
; $70 - 7
; $80 - 8
; $90 - 9
; $A0 - 10
; $B0 - J
; $C0 - D
; $D0 - K
; $E0 - A
; $01 - Karo
; $02 - Herz
; $03 - Pik
; $04 - Kreuz
; Wertigkeit des Blatts
; $0 - Höchste Karte
; $1 - ein Paar
; $2 - zwei Paare
; $3 - Drilling
; $4 - Straße
; $5 - Flush
; $6 - Full House
; $7 - Vierling
; $8 - Str Flush
Procedure Wert(Hex)
ProcedureReturn Round(Hex/16,0)
EndProcedure
Procedure Farbe(Hex)
ProcedureReturn Pow(2,Hex-Wert(Hex)*16-1)
EndProcedure
Procedure BlattWertigkeit()
Dim TempKarte(6)
Dim TempKarteWert(6)
Dim TempKarteFarbe(6)
Dim TempFarbe(8)
For n = 0 To 6 :
TempKarte(n) = Karte(n)
Next n
SortArray(TempKarte(), 1)
For n = 0 To 6
TempKarteWert(n) = Wert(TempKarte(n))
TempKarteFarbe(n) = Farbe(TempKarte(n))
Next n
Blatt = 0
; Str Flush
Strasse = 0
For n = 0 To 2 :
If Strasse < TempKarteWert(n)
If TempKarteWert(n+1)+1 = TempKarteWert(n) And TempKarteWert(n+2)-2 = TempKarteWert(n) And TempKarteWert(n+3)-3 = TempKarteWert(n) And TempKarteWert(n+4)-4 = TempKarteWert(n):
Strasse = TempKarteWert(n)
Temp = 0
For m = n To n+4
Temp = Temp|TempKarteFarbe(m)
Next m
If Temp = TempKarteFarbe(n)
Blatt = $800000+Pow(16,4)*Strasse
EndIf
EndIf
EndIf
Next n
If Blatt = 0
; Vierling
Vierer = 0
For n = 0 To 3 :
If TempKarteWert(n) = TempKarteWert(n+3) :
Vierer = TempKarteWert(n)
If Vierer
If n
Blatt = $700000+Pow(16,4)*Vierer+Pow(16,3)*TempKarteWert(0)
Else
Blatt = $700000+Pow(16,4)*Vierer+Pow(16,3)*TempKarteWert(4)
EndIf
EndIf
EndIf
Next n
If Blatt = 0
; Full House
Dreier = 0
For n = 0 To 4 :
If TempKarteWert(n) = TempKarteWert(n+2) And TempKarteWert(n) > Dreier :
Dreier = TempKarteWert(n)
EndIf
Next n
Paar = 0
For n = 0 To 5 :
If TempKarteWert(n) = TempKarteWert(n+1) And TempKarteWert(n) <> Dreier And TempKarteWert(n) > Paar :
Paar = TempKarteWert(n)
EndIf
Next n
If Dreier And Paar
Blatt = $600000+Pow(16,4)*Dreier+Pow(16,3)*Paar
EndIf
If Blatt = 0
; Flush
For n = 0 To 6 :
TempFarbe(TempKarteFarbe(n)) + 1
Next n
For f = 1 To 4 :
Wert = Pow(2,f-1)
If TempFarbe(Wert) >= 5
i = 5
Blatt = $500000
For n = 0 To 6
If TempKarteFarbe(n) = f And i
i-1
Blatt + Pow(16,i)*TempKarteWert(n)
EndIf
Next n
EndIf
Next f
If Blatt = 0
; Straße
If Strasse
Blatt = $400000+Pow(16,4)*Strasse
EndIf
If Blatt = 0
; Dreier
If Dreier
Blatt = $300000+Pow(16,4)*Dreier
i = 4
For n = 0 To 6
If TempKarteWert(n) <> Dreier And i>2
i - 1
Blatt + Pow(16,i)*TempKarteWert(n)
EndIf
Next n
EndIf
If Blatt = 0
If Paar
Paar2 = 0
For n = 0 To 5 :
If TempKarteWert(n) = TempKarteWert(n+1) And TempKarteWert(n) <> Paar And TempKarteWert(n) > Paar2 :
Paar2 = TempKarteWert(n)
EndIf
Next n
; zwei Paare
If Paar2
Blatt = $200000+Pow(16,4)*Paar+Pow(16,3)*Paar2
For n = 0 To 6
If TempKarteWert(n) <> Paar And TempKarteWert(n) <> Paar2
Blatt + Pow(16,2)*TempKarteWert(n)
n = 6
EndIf
Next n
; ein Paare
Else
Blatt = $100000+Pow(16,4)*Paar
i = 4
For n = 0 To 6
If TempKarteWert(n) <> Paar And i>1
i - 1
Blatt + Pow(16,i)*TempKarteWert(n)
EndIf
Next n
EndIf
; Höchste Karte
Else
Blatt = $000000
i = 5
For n = 0 To 6
If TempKarteWert(n) <> Dreier And i>0
i - 1
Blatt + Pow(16,i)*TempKarteWert(n)
EndIf
Next n
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
ProcedureReturn Blatt
EndProcedure
Karte(0) = $21 ; Meine Karten
Karte(1) = $A2 ; Meine Karten
Karte(2) = $C3 ; Flop
Karte(3) = $23 ; Flop
Karte(4) = $33 ; Flop
Karte(5) = $E3 ; Turn
Karte(6) = $94 ; River
Debug Hex(BlattWertigkeit())