Registriert seit: 1. Feb 2004
61 Beiträge
Delphi 6 Personal
|
Re: Mischen Funktion
16. Sep 2004, 17:39
Hi!
Auf den ersten Blick erscheint die "Random" Funktion die richtige Wahl, die eine Ganzzahl zurückgibt.
Ergebnis := random(IconZahl-1) + 1; // ergibt einen Wert zwischen 0 und 29 + 1 also 1 bis 30
Hier sind aber zwei Dinge zu beachten:
a.)
Die Random Funktion liefert Ergebnisse von Null an. Da Deine Icons anscheinend ab eins gezählt werden, darf also nur ein Random(29) erzeugt werden. Das Ergebnis muss also danach um eins erhöht werden.
b.)
Random kann nicht wirklich zufällig Zahlen liefern.
Die Random Funktion würde so bei jedem Aufruf die gleiche Reihenfolge von "Zufallszahlen" liefern, daher muss vor dem Aufruf ein "Randomize;" her, dass in der Reihe von Zufallszahlen jeweils an einem anderen Punkt aufsetzt.
Ggf. kann jemand anderes die genaue interne Funktion der Zufallszahlenermittlung erklären.
Jetzt wären die Icons also zufällig. Das reicht aber wohl nicht, denn wenn ich mich an Menory recht erinnere gibt es jedes Kärtchenpaar nur einmal. Du musst also die gültigen IconZahlen irgendwie zwischenspeichern (zB. in einem Array oder einer Stringliste oder so) und dann die bereits benutzten Einträge herausnehemn um zu vermeiden, dass ein Kartenpaar mehrfach benutzt wird.
Bei meinem MP3 Player hatte ich für die Zufallswiedergabe ein ähnliches Vorhaben. Hier habe ich die Liednummern/Dateinamen mittels einer Stringlist zu Beginn ermittelt und dann nach und nach die benutzten aus der Liste gelöscht. Dann muss das Random sich aber natürlich auf die restliche Anzahl Einträge der Liste und nicht der Gesamtliedanzahl, bzw Iconanzahl beziehen.
|