Selfmade HeadsUp-Dealer - Druckversion +- raise.ch (http://raise.ch/forum) +-- Forum: Online-Poker (/forumdisplay.php?fid=4) +--- Forum: Poker-Software / Technik (/forumdisplay.php?fid=16) +--- Thema: Selfmade HeadsUp-Dealer (/showthread.php?tid=5778) |
Selfmade HeadsUp-Dealer - von7thal - 03-20-2009 05:36 PM Wie einige von euch vielleicht schon in einem Blog von armi gelesen habt, habe ich ein kleines Tool geschrieben, welches das mühsame Dealen in Shorthanded-Games abnehmen soll. Vor allem in HeadsUp-Matches sind mehrere uncontested Pots keine Seltenheit. Dieses Tool wird verwendet in dem man einen Laptop, bei welchem der Bildschirm ganz herunter geklappt werden kann, mit Karten ausrüstet um die Karten in den Ecken abzudecken. Ich habe keine Ahnung wieviele solche Laptops es gibt, meiner gehört dazu. Gesetzt wird wie gehabt mit Chips. Jeder muss für sich selbst entscheiden ob durch dieses Tool zuviel des Pokerfeelings verloren geht oder ob es die Geschwindkeit wert ist. (Wohl so 170 Hände pro Stunde wenn pre viel gemuckt wird.) Ich muss euch aber warnen dass es weder wirklich sauber geschrieben, noch kommentiert noch von a-z getestet wurde. In seltenen Fällen kann es auch vorkommen dass sich einige Karten nicht mehr wechseln und das Programm neugestartet werden muss. Das Tool wurde in Excel VBA 2003 für XP geschrieben da ich mich nur mit dieser Programmiersprache ein bisschen auskenne. Ich habe keinerlei Tests auf Vista gemacht! Sollte es auf Vista nicht funktionieren sollte die Anpassung aber nicht allzu schwierig sein. Die Karten werden 2fach random gemixt. Als zufälliger Faktor wird die Systemzeit genommen. Der Code ist offen einsehbar und ihr könnt ihn gern verbessern aber dann bitte hier posten. Download HeadsUp-Dealer-1.0 Letzter Tipp. Bleibt das Programm hängen versucht als erstes die Tastenkombination Ctrl+Alt+Pause. Have fun@ausprobieren. Vorschläge erwünscht! PS: Habe mich nun def. als Riesennerd geoutet :-) Re: Selfmade HeadsUp-Dealer - Ostarr - 03-20-2009 05:59 PM Habs kurz auf Vista ausporbiert und bei mir funktionierts, ist sicher eine witzige idee, habe aber warscheinlich keine verwendung dafür.... Re: Selfmade HeadsUp-Dealer - Fabo360 - 03-20-2009 06:20 PM sehr geil, vonsi! hast du den random generator selber entworfen? Re: Selfmade HeadsUp-Dealer - dj_inter - 03-20-2009 10:10 PM sehr nice, thx a lot Re: Selfmade HeadsUp-Dealer - von7thal - 03-21-2009 01:52 PM Fabo360 schrieb:sehr geil, vonsi! hast du den random generator selber entworfen? nein. es wurde der random generator von vba verwendet, jedoch mit 2 unabhängigen zufallsgeneratoren. ich werde euch das programm heute abend noch detaillierter erläutern. zudem müsste noch eine individuelle bildschirmanpassung realisiert werden. momentan ist das spielfeld auf meine laptopauflösung von 1280x800 angepasst. zudem hat meine freundin eben einen bug im easter egg entdeckt... :wink: Re: Selfmade HeadsUp-Dealer - von7thal - 03-21-2009 10:03 PM 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() 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. Re: Selfmade HeadsUp-Dealer - Nimifluk - 03-22-2009 12:18 PM Hab mal obigen Code überflogen ohne das Excel anzuschauen und mir ist aufgefallen, dass Du Randomize zig mal aufrufst, das kannst Du Dir sparen. Diese Funktion ruft man lediglich zu Beginn einmal auf, um den Startwert des RNG 'zufällig' zu initialisieren, weitere Aufrufe verbessern die Qualität nicht, da mit der RND-Funktion die initialiserte Startsequenz automatisch fortgesetzt wird. Das Mischen der Karten ist am einfachsten über ein Kartenarray lösbar, d.h. Array mit den 52 Kartenwerten (bzw. Referenzen auf die Karten) und dann jeden Index einmal mit einem zufällig ermiteltem zweiten Index swappen. Zitat:rndC = Int((anzCardsInDeck - 1 + 1) * Rnd + 1)Nice :lol: Int(AnzCardsInDeck*RND+1) würd ausreichen, der Rest (-1+1) ist Zeit- und Energierverschwendung ;-) Denken ist auch beim coden erlaubt, selbst wenn viele Samples es so machen wie Du :mrgreen: Re: Selfmade HeadsUp-Dealer - von7thal - 03-22-2009 01:47 PM Nimifluk schrieb:Hab mal obigen Code überflogen ohne das Excel anzuschauen und mir ist aufgefallen, dass Du Randomize zig mal aufrufst, das kannst Du Dir sparen. Diese Funktion ruft man lediglich zu Beginn einmal auf, um den Startwert des RNG 'zufällig' zu initialisieren, weitere Aufrufe verbessern die Qualität nicht, da mit der RND-Funktion die initialiserte Startsequenz automatisch fortgesetzt wird. ah ok. habe ursprünglich keine randomize eingefügt was aber zu ständig identischen kartenverteilungen führte :-) die hilfe sagte dann etwas von randomize und dachte dass dies zählt BIS eine RN generiert wurde. dann werde ich das anpassen wenn ich das nächste mal rumbastle. ty array macht def. sinn =D habe das kartendeck ursprünglich nur in textform im excel sheet gespeichert und den ursprung dann belassen. aus faulheit aber auch aus unwissenheit wie ein sauberer array programmiert wird :wink: 'richtig' programmieren kann ich nicht wirklich :wink: Nimifluk schrieb:rndC = Int((anzCardsInDeck - 1 + 1) * Rnd + 1) haha :-) wollte mich jetzt nicely rausschwatzen dass ich bloss die hilfe von MS ge copy pasted habe aber die sind wohl nicht ganz hirnlos.. wtf kommt das da hin =D thx für tipps. darfst natürlich sehr gerne den kompletten code überarbeiten und verbessern wenn du willst :wink: |