Passwort vergessen?   -   Registrieren

Selfmade HeadsUp-Dealer
Verfasser Nachricht
von7thal Offline
Administrator

Beiträge: 3,209
Registriert seit: Mar 2007
Beitrag #6
Re: Selfmade HeadsUp-Dealer
wie angekündigt kurzes statement zum random generator.

alle karten sind in einer userform namens frmHolecards in "image-boxen" hinterlegt welche von c1 bis c52 durchnummeriert wurde. alle karten haben hier zwar einen statischen wert welcher in etwa mit der kartennummer wächst aber habe mich dabei nicht gross geachtet ob die reihenfolge eingehalten wird.

sind keine holecards verteilt wird mittels dem "shuffle up and deal"-button folgender programmcode aufgerufen:

Code:
Sub shuffledeal()

    Dim anzCardsInDeck, rndNr, anzPlayer, cnt, counter, rndC As Integer
    Dim card, anzCards, feld As String
    
    table.c1.Picture = frmHolecards.c_empty.Picture
    table.c1.Tag = ""
    table.c2.Picture = frmHolecards.c_empty.Picture
    table.c2.Tag = ""
    table.c3.Picture = frmHolecards.c_empty.Picture
    table.c3.Tag = ""
    table.c4.Picture = frmHolecards.c_empty.Picture
    table.c4.Tag = ""
    
    Sheets(2).Select
    
    counter = 1
    anzCardsInDeck = 52
    anzPlayer = table.anzspieler.Value
    anzCards = anzPlayer * 2
    cnt = 1
    
    Range("A1:A52").clear
    
    Do While Not counter > 52
    
    Randomize
    
    rndC = Int((anzCardsInDeck - 1 + 1) * Rnd + 1)
        
    If Cells(rndC, 1).Value = Empty Then
    
        Cells(rndC, 1).Value = "c" & counter
    
    Else
    
        Do While Not Cells(rndC, 1).Value = Empty
            
            rndC = rndC + 1
            
            If rndC > 52 Then
            
                rndC = 1
            
            End If
        
        Loop
            
        Cells(rndC, 1).Value = "c" & counter
        
    End If
    
    counter = counter + 1

    Loop
  
    
    Do While Not cnt > anzCards
    
        Randomize
        
        rndNr = Int((anzCardsInDeck - 1 + 1) * Rnd + 1)
        card = Sheets(2).Range("A" & rndNr).Value
        Sheets(2).Range("A" & rndNr).Value = ""
        Do While card = Empty
        
            rndNr = rndNr + 1
            
            If rndNr > anzCardsInDeck Then
            
                Randomize
            
                rndNr = Int((anzCardsInDeck - 1 + 1) * Rnd + 1)
            End If
            
            card = Sheets(2).Range("A" & rndNr).Value
            
            Sheets(2).Range("A" & rndNr).Value = ""
            
        Loop
        
        feld = "c" & cnt
        
        table(feld).Picture = frmHolecards(card).Picture
        table(feld).Tag = "c"
    
        cnt = cnt + 1
    
    Loop
    
    Sheets(1).Select

End Sub

soweit ich das verstanden habe wird ab "Randomize" die systemzeit gemessen bis die random zahl uf der nächsten zeile generiert wurde. dieser wert ist abhängig von sonstigen prozessen welche zur zeit bearbeitet werden und somit für privatpersonen absolut genug random.

ich wollte aber ein bisschen etwas kniffligeres austüfteln und habe mich für folgende methode entschieden:
zu beginn wird auf sheet 2 namens "kartendeck" gewechselt. nun werden in zelle 1-52 alle zahlen von 1-52 zufällig verteilt eingefügt. (jeweils wie die "image-boxen" benannt wurden. also c34 zum beispiel)
diese reihenfolge bleibt jetzt für den rest einer runde.

nun kommt das eigentliche austeilen der karten:
jede holecardbox hat eine ID von c1-c8 (jeweils 2 holecardboxes pro spieler).
nun wird pro holecardbox (anzahl abhängig von gewählter spieleranzahl) zufällig ein wert von 1-52 erzeugt. wird als erstes der wert 18 ausgegeben so wird die karte der imagebox welche in zelle A18 auf sheet 2 ("kartendeck") steht, in die erste holecardbox kopiert und der inhalt von zelle A18 gelöscht da jede karte nur einmal zugewiesen werden kann. wird als zweite zufallszahl erneut die 18 ausgegeben, so merkt das programm dass die zelle leer ist und nimmt die nächste zelle, in diesem fall A19. wäre die nächste zelle A53 so wird erneut eine zufällige zahl generiert.

mit den boardcards verhält es sich ziemlich gleich wie oben beschrieben.

wenn ihr mehr infos zur umsetzung haben wollt. dann nur zu.

pokercoaching.ch
dein persönlicher Pokercoach

OmahaWinners.com
Seht euch mein kostenloses Omaha Preflop Chart an!
03-21-2009 10:03 PM
zitieren


Nachrichten in diesem Thema
Selfmade HeadsUp-Dealer - von7thal - 03-20-2009, 05:36 PM
Re: Selfmade HeadsUp-Dealer - Ostarr - 03-20-2009, 05:59 PM
Re: Selfmade HeadsUp-Dealer - Fabo360 - 03-20-2009, 06:20 PM
Re: Selfmade HeadsUp-Dealer - dj_inter - 03-20-2009, 10:10 PM
Re: Selfmade HeadsUp-Dealer - von7thal - 03-21-2009, 01:52 PM
Re: Selfmade HeadsUp-Dealer - von7thal - 03-21-2009 10:03 PM
Re: Selfmade HeadsUp-Dealer - Nimifluk - 03-22-2009, 12:18 PM
Re: Selfmade HeadsUp-Dealer - von7thal - 03-22-2009, 01:47 PM

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste

Kontakt | raise.ch | Nach oben | Zum Inhalt | Archiv-Modus | RSS-Synchronisation
Deutsche Übersetzung: MyBBoard.de, Powered by MyBB, © 2002-2024 MyBB Group.
Designed by © Dynaxel