Entwickler-Ecke
Sonstiges (Delphi) - Problem bei Karten - Geb - Routine
Girgl - So 24.10.04 15:09
Titel: Problem bei Karten - Geb - Routine
Servus,
ich bin grad dabei ein Kartenspiel zu machen.Ich brauch eine Routine,die mir alle 32 Karten zufällig auf 4 Mann verteilt.Jetz weiss ich aber nich,wie ich dem Programm sage,dass er die Karten,die schon vergeben wurden,nicht weiter mit einberechnen soll.Ich habe den karten nummern von 1-32 gegeben(es gibt ja auch 32 karten :wink: ) und hab mir gedacht,ich mach mir ein neues Array,in das ich reinschreibe,welche nummern schon weg sind.Ist das aber nicht ein wenig zu umständlich,jedesmal per schleife zu testen,ob die nummer schon vergeben ist?
Hoffe ihr könnt helfen
mfg Girgl
Delete - So 24.10.04 15:17
ich würde ne Integerliste nehmen, sie mit 1-32 bestücken und dann folgendes machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var loop, i: integer; ... for loop := 0 to 31 do begin i := random(IntegerList.Count) SetKarte(IntegerList[i]); IntegerList.Delete(i); end; |
Es wird also immer zufällig ein Eintrag aus den noch vorhandenen rausgepickt und dann rausgelöscht.
*ungetestet*
Girgl - So 24.10.04 16:00
Also ich habs jetz mal auf eigene Weise probiert,aber klappen tuts irgendwie noch nicht.
So sieht die Funktion aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var KartenNr,Count:Byte; begin KartenNr:=Random(32)+1; For Count:=1 to 32 do begin If(VergebeneKarten[Count]=KartenNr) Then begin KartenGeben; end else begin VergebeneKarten[nKartenVergeben]:=KartenNr; Inc(nKartenVergeben); result:=KartenNr; end; end; |
nKartenVergeben ist die Anzahl bereits vergebener Karten
VergebeneKarten ist ein Array,welches die bereits vergebenen Kartennummern enthlanten soll.Leider kommen immernoch öfters die gleichen Karten vor.Was stimmt an der funktion nicht?
sourcehunter - Do 28.10.04 11:36
Du hast etwas grundlegendes vergessen. Du musst vorm Kartengeben überprüfen, ob die Karte in denem Array noch nitch vorhanden ist und dann eine neue Karte geben (so bei Zeile 5). Aber ich hab hier mal nen anderen Vorschlag für dich:
Misch doch einfach die Karten vorher und gib dann jeweils 8 Karten an die Spieler aus. Das Mischen machst du, indem du zufällig zwei Karten auswählst un deren Position im Stapel vertauscht, das so ungefähr 100-1000 mal wiederholen und fertig gegeben!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!