23. Jul 2019, 07:27
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0413
  VB6: Pokerengine - Straight, OESD, Gutshot usw. erkennen?
 Von Yardbird
 Am 05. Oktober 2008 um 23:46:05
 Frage Hallo.
Ich habe folgende 3 Probleme. Ich will eine Straight erkennen. Dies allerdings aus 5-7 Karten. Also die Kartenzahl ist variable.
Erst sortiere ich die Karten nach Größe: (A=14,K=13 usw.)
Dann sehen die C() bspw. so aus:
C(0)=14;C(1)=12;C(2)=10;C(3)=6;C(4)=3
Dann prüfe ich die Differenz zur nächsten Karte.
Private Sub Straight()
Dim i As Integer
Dim C(6) As Integer
Dim intZaehler As Integer
Dim intNumber As Integer
blnGutShot = False
blnDblGutShot = False
blnOESD = False
blnStraight = False
For i = 0 To 6
C(i) = K(i)
Next i
intZaehler = 0
QuickSortNum C, 0, 6
If C(6) - C(0) = -12 Then
intZaehler = intZaehler + 1
intNumber = 6
End If
If C(5) - C(6) = 1 Then
intZaehler = intZaehler + 1
intNumber = 5
End If
If C(4) - C(5) = 1 Then
intZaehler = intZaehler + 1
intNumber = 4
End If
If C(3) - C(4) = 1 Then
intZaehler = intZaehler + 1
intNumber = 3
End If
If C(2) - C(3) = 1 Then
intZaehler = intZaehler + 1
intNumber = 2
End If
If C(1) - C(2) = 1 Then
intZaehler = intZaehler + 1
intNumber = 1
End If
If C(0) - C(1) = 1 Then
intZaehler = intZaehler + 1
intNumber = 0
End If

'????????????????? Gutshot ????????????????? Bsp: 2 4 | 5 6 OR K Q | 2 T 5 | 9
'????????????????? Doppelter Gutshot ????????????????? Bsp: 5 6 | 3 2 8 | 9

If intZaehler = 3 Then 'OESD
For i = 0 To 6
If intNumber = i Then
If C(i) - C(i + 3) = 3 Then blnOESD = True
End If
Next i
End If
If intZaehler = 4 Then 'Straight - OHNE A-5 prüfen
For i = 0 To 6
If intNumber = i Then
If C(i) - C(i + 4) = 4 And C(0) - C(1) = 1 And C(1) - C(2) = 1 And C(2) - C(3) = 1 And C(3) - C(4) = 1 And C(4) - C(5) = 1 Then blnStraight = True
End If
Next i
End If

For i = 0 To 6
If C(i) = 14 Then C(i) = 1 'Wert Ass=14 In Ass=1 umwandeln
Next i
If intZaehler = 4 Then 'Straight - MIT A-5 prüfen
For i = 0 To 6
If intNumber = i Then
If C(i) - C(i + 4) = 4 Then blnStraight = True
End If
Next i
End If
For i = 0 To 6
If C(i) = 1 Then C(i) = 14 'Wert Ass=1 In Ass=14 umwandeln
Next i
End Sub
1. Problem:
Die Straight Ohne A-5 wird nicht immer erkannt.
2. Problem:
Wie erkenne ich einen GutShot?
3. Problem:
Wie erkenne ich einen doppelten GutShot?

Ich weiß nicht, ob diese Differenz-Geschichte so eine gute Sache ist.
Vielleicht fällt jemanden etwas besseres ein.

Schönen Gruß
Yardbird
[ VB-/VBA-Forum | Archiv 0413 | Archiv-Übersicht ]
 Antworten
VB6: Pokerengine - Straight, OESD, Gutshot usw. erkennen? - Yardbird 05. Oktober 2008 um 23:46:05
Re: Pokerengine - Straight, OESD, Gutshot usw. erkennen? - Bertha 08. Oktober 2008 um 20:33:43

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum