AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Karten geben

Ein Thema von Samufi · begonnen am 29. Okt 2009 · letzter Beitrag vom 29. Okt 2009
Antwort Antwort
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#1

Karten geben

  Alt 29. Okt 2009, 12:13
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:
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;
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...
Vielen Dank allen schon im Voraus, die sich des Problems annehmen!
Samufi
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#2

Re: Karten geben

  Alt 29. Okt 2009, 12:18
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
Glückauf
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Karten geben

  Alt 29. Okt 2009, 12:24
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
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Karten geben

  Alt 29. Okt 2009, 12:25
Danke für die Ansätze! Ich denke, das müsste ich jetzt irgendwie honkrigen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz