![]() |
Karten geben
Hallo,
ich versuche gerade ein Kartenspiel zu programmieren und bin beim Karten geben stecken geblieben. Mein Plan war, für jeden Spieler eine ListBox (die dann später noch mit Bildern verknüpft werden soll) zu erstellen und die Kartenwerte per Zufallsgenerator dort hineinzuschreiben. Dazu brauche ich aber einen Zufallsgenerator, der schon herausgegebene Werte nicht noch einmal annimmt. Dann könnte die Sache ungefähr so aussehen:
Delphi-Quellcode:
Mein Problem ist jetzt, dass ich keinen solchen Zufallsgenerator kenne; der, den ich jetzt gefunden habe (random(KartenAnzahl)) würde ja auch mehrmals dieselben Karten ausspucken. ich habe schon überlegt, den Generator in eine Repeat-Schleife zu packen, bis die Bedingung erfüllt ist, dass kein bisher schon aufgetretener Wert heruaskommt aber das wäre äußerst unelegant und könnte zu langen wartezeiten führen. Ich brauche also ein Zufallsgerät für eine "Kugelziehung ohne Zurücklegen" um das mal bildhaft auszudrücken...
var I,J,SpielerAnzahl,KartenAnzahl,KartenGesamt:Integer;
begin For I:=1 to SpielerAnzahl do begin For J:=1 to KartenAnzahl do begin TListBox(Form1.FindComponent('ListeSpieler'+InttoStr(I))).Items.add([Zufallsgenerator](KartenGesamt)) end; end; end; Vielen Dank allen schon im Voraus, die sich des Problems annehmen! Samufi |
Re: Karten geben
Hast du dir schon mal überlegt, wie im richtigen Leben Karten gegeben werden ? Man bringt die Reihenfolge des Stapels durcheinander und gibt danach von oben.
Vorschlag : Ein Array, in dem alle Karten geordnet drinstehen 2 Zufallszahlen hintereinander ziehen und die Karten im Array vertauschen Das ganze dann 1000-10000 mal wiederholen Dann einfach " von oben " geben |
Re: Karten geben
Oder:
Alle Karten in einer Liste halten (TList, TStringList) und dann per idx:=random(List.Count-1) eine Karte ziehen und diese nach dem ziehen aus der Liste löschen List.Delete(idx). Gruß Marco |
Re: Karten geben
Danke für die Ansätze! Ich denke, das müsste ich jetzt irgendwie honkrigen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz