Irgendwie bin ich bei meinem aktuellen Projekt nicht richtig vorwärts gekommen und hatte auch irgendwie nichts zu tun heute Abend.
Da hab ich eben angefangen dein Poker-Prog zu schreiben. Dachte zuerst, dass das nur eine halbe Stunde dauern würde, wurde zwar jetzt ein bisschen mehr, aber immerhin es ist fertig und funktioniert (Spaß gemacht hats auch).  
Wer mag kann den XP-Skin aktivieren. Die Buttons sind groß genug, so dass es übersichtlich bleibt.
Code: Alles auswählen
; Bax - 01|07
; PB 4.02
If OpenWindow(0, 0, 0, 178, 590, "Pokerhilfe", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
  ; Konstanten für die vier Farben
  Enumeration
    #Pik
    #Karo
    #Kreuz
    #Herz
  EndEnumeration
  Global NewList cards.l()   ; Liste der ausgewählten Karten
  Global result.l            ; Bewertungsergebnis
  ;{ Images für die vier Farben
  CreateImage(#Karo, 32, 32)
    StartDrawing(ImageOutput(#Karo))
      Box(0, 0, 32, 32, $D8E9E9)
      LineXY(16,  0, 32, 16, $0000FF)
      LineXY(32, 16, 16, 32, $0000FF)
      LineXY(16, 32,  0, 16, $0000FF)
      LineXY( 0, 16, 16,  0, $0000FF)
      FillArea(16, 16, $0000FF, $0000FF)
    StopDrawing()
  CreateImage(#Herz, 32, 32)
    StartDrawing(ImageOutput(#Herz))
      Box(0, 0, 32, 32, $D8E9E9)
      Circle(9, 9, 8, $0000FF)
      Circle(23, 9, 8, $0000FF)
      LineXY(0, 8, 16, 30, $0000FF)
      LineXY(32, 8, 16, 30, $0000FF)
      FillArea(16, 24, $0000FF, $0000FF)
    StopDrawing()
  CreateImage(#Pik, 32, 32)
    StartDrawing(ImageOutput(#Pik))
      Box(0, 0, 32, 32, $D8E9E9)
      Circle(9, 16, 7, $000000)
      Circle(23, 16, 7, $000000)
      Box(15, 16, 2, 16, $000000)
      LineXY(3, 13, 16, 0, $000000)
      LineXY(29, 13, 16, 0, $000000)
      Circle(16, 32, 6, $000000)
      FillArea(16, 8, $000000, $000000)
    StopDrawing()
  CreateImage(#Kreuz, 32, 32)
    StartDrawing(ImageOutput(#Kreuz))
      Box(0, 0, 32, 32, $D8E9E9)
      Circle(8, 16, 5, $000000)
      Circle(16, 8, 5, $000000)
      Circle(24, 16, 5, $000000)
      Box(8, 15, 16, 2, $000000)
      Box(15, 8, 2, 24, $000000)
      Circle(16, 32, 5)
    StopDrawing()
  ;}
  CreateGadgetList(WindowID(0))
    ; Kartenauswahl für jede Farbe (x)
    For x=0 To 3
      ImageGadget(x*14, 10 + x*42, 10, 32, 32, ImageID(x))
      For y=2 To 10
        ButtonGadget(x*14 + (y-1), 10 + x*42, 36 + (y-1)*24, 32, 24, Str(y), #PB_Button_Toggle)
      Next
      ButtonGadget(x*14 + 10, 10 + x*42, 286, 32, 24, "J", #PB_Button_Toggle)
      ButtonGadget(x*14 + 11, 10 + x*42, 310, 32, 24, "Q", #PB_Button_Toggle)
      ButtonGadget(x*14 + 12, 10 + x*42, 334, 32, 24, "K", #PB_Button_Toggle)
      ButtonGadget(x*14 + 13, 10 + x*42, 368, 32, 24, "A", #PB_Button_Toggle)
    Next
    
    ; Position des Spielers
    OptionGadget(56,  10, 402, 53, 20, "First")  :  SetGadgetState(56, #True)
    OptionGadget(57,  63, 402, 53, 20, "Middle")
    OptionGadget(58, 116, 402, 52, 20, "Last")
    ; Besonderheiten
    CheckBoxGadget(60, 10, 432, 158, 20, "suited")
    CheckBoxGadget(61, 10, 452, 158, 20, "pair")
    CheckBoxGadget(62, 10, 472, 158, 20, "straight chance")
    ; Ausrechnen
    ButtonGadget(  59, 10, 502, 158, 24, "Berechnen")  :  DisableGadget(59, #True)
    TextGadget(    63, 50, 526,  79, 20, "", #PB_Text_Center|#PB_Text_Border)
    ; Zurücksetzen
    ButtonGadget(64, 10, 556, 158, 24, "Zurücksetzen")
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        ; Karte auswählen / aus Auswahl entfernen
        If (EventGadget() < 56) And (EventGadget() % 14)
          If GetGadgetState(EventGadget())
            AddElement(cards())  :  cards() = EventGadget()
          Else
            ForEach cards()   ; die richtige Karte löschen
              If cards() = EventGadget()
                DeleteElement(cards())
                Break
              EndIf
            Next
          EndIf
          ; Berechnen möglich / unmöglich:
          If CountList(cards()) = 2  :  DisableGadget(59, #False)  :  Else  :  DisableGadget(59, #True)  :  EndIf
        ; Berechnen:
        ElseIf EventGadget() = 59
          result = 0
        
          SelectElement(cards(), 0)  :  card_1 = cards()
          SelectElement(cards(), 1)  :  card_2 = cards()
          If (card_1 / 14) = (card_2 / 14) Or GetGadgetState(60)  :  result + 4  :  EndIf   ; gleiche Farbe
          If (card_1 % 14) = (card_2 % 14) Or GetGadgetState(61)  :  result + 4  :  EndIf   ; Paar
          If GetGadgetState(62)                                   :  result + 3  :  EndIf   ; Chance auf eine Straße
          
          If GetGadgetState(57)       ; Mitte
            result + 3
          ElseIf GetGadgetState(58)   ; hinten
            result + 5
          EndIf
          
          ForEach cards()
            If (cards() % 14) < 9           ; 2-9
              result + (cards() % 14) + 1
            ElseIf (cards() % 14) < 13      ; 10 / B-D-K
              result + (cards() % 14) + 2
            Else                            ; Ass
              result + 16
            EndIf
          Next
          
          SetGadgetText(63, Str(result))
      
        ; Zurücksetzen:
        ElseIf EventGadget() = 64
          For i=0 To 55
            If (i%14) = 0  :  Continue  :  EndIf   ; Images überspringen
            SetGadgetState(i, #False)
          Next
          SetGadgetState(56, #True)
          DisableGadget(59, #True)
          For i=60 To 62  :  SetGadgetState(i, #False)  :  Next
          SetGadgetText(63, "")
          
          ClearList(cards())
        EndIf
        
    EndSelect
  ForEver
EndIf
Die Grafiken sind etwas rudimentär, ging eher darum, dass man die Zeichen erkennt.
In deiner Beispiel-Rechnung ist 9+13+4+5 = 31 und nicht 27.