Zufallsgenerator für Memory
Übersicht

DonKrawalloBetreff: Zufallsgenerator für Memory |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich schreibe gerade ein Memory-Spiel. Es sollen auf einem Spielfeld 16 Karten per Zufall verteilt werden. Das heißt 8 Bilder und jedes Bild soll zweimal verteilt werden. Kann mir bitte jemand helfen, wie ich das anstellen kann. PS:Für mich ist das alles noch neu. Gruß Don |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist der Code zu sowas:
Zitat: Graphics 320,240,0,2 ;Grafikmodus laden
SeedRnd MilliSecs() ;Zufallsgenerator setzten auf eine nichtberechenbare Zahl Dim Karte(15) ;Kartenfelder Setzten For Kartennummer=0 To 7 ;8 Kartenarten verteil schleife For S= 0 To 1 ; 2 Karten gehören zu den 8 gelegt=0 ; Variable für die schleife! Repeat ; Schleifenanfang Nummer=Rand(0,15) ; Zufalls Zahl ermitteln (Zwischen 0 und 15 --> 16 Karten) If Karte(nummer) = 0 Then ; Wenn Feld noch nicht Belegt Karte(nummer) = Kartennummer ; Dann karte dorthin Legen gelegt=1 ; Variable für schleife verlassen End If ;Abfrage beendet Until gelegt=1 ; Schleifenende Next ; bis die 2. Karte gelegt Next ; bis 8 Kartenartengelegt For X= 0 To 3 For Y= 0 To 3 Text X*30,y*30,Karte((X*4)+Y) ;Kartennummern angeben Next Next WaitKey() ; auf taste warten! Kann das bitte jemand anders erklären?Ich habe es auskommertiert! THx |
||
between angels and insects |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Etwas mehr! Bitte!
Code: [AUSKLAPPEN] Graphics 320,240,0,2 ;Grafikmodus laden
SetBuffer BackBuffer() Local KartenPaareAnzahl,X,Y KartenPaareAnzahl=8 Bild=LoadAnimImage ("MemoryBilder.BMP", 32, 32, 0, KartenPaareAnzahl+1); lädt alle Bilder aus einer Datei. die Bilder müssen 8(+1 dsa verdeckt ist) sein und die Größe 32*32 haben! SeedRnd MilliSecs() Dim Karte(0) Dim Aufgedeckt(0) Karten_mischen(KartenPaareAnzahl) ;--------------------Das ein paar aufgedeckt sind und ein paar nicht! For s= 0 To KartenPaareAnzahl*2 Aufgedeckt(s)=Rand(0,1) Next ;-------------------- Repeat For X= 0 To 3 For Y= 0 To 3 If aufgedeckt((X*4)+Y) = 1 Then DrawImage Bild,X*40,y*40,Karte((X*4)+Y) ;Wird gezeichnet, wenn aufgedeckt! Else DrawImage Bild,X*40,y*40,KartenPaareAnzahl+1 End If Next Next Flip Until KeyHit(1) Function Karten_mischen(KartenPaareAnzahl) Dim Karte(KartenPaareAnzahl*2) Dim Aufgedeckt(KartenPaareAnzahl*2) For Kartennummer=0 To KartenPaareAnzahl-1 For S= 0 To 1 gelegt=0 Repeat Nummer=Rand(0,KartenPaareAnzahl*2-1) If Karte(nummer) = 0 Then Karte(nummer) = Kartennummer gelegt=1 End If Until gelegt=1 Next Next End Function |
||
between angels and insects |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
das Prinzip ist einfach: gib jeder Karte noch eine Zufallszahl (hier 16 karten),zb; rnd (0,255) dabei spielt es keine Rolle ob 2 karten dann nachher mal die Gleiche zufalls Zahl bekommen dann das feld anhand der Zahlen sortieren mit BubbleSort und schon sind diese gemischt! jetzt weiß ich aber nicht wie du deine Memorykarten verarbeitest um auf weitere Details eingehen zu können! hier jetzt irgendwas zu coden ist ziemlich sinnlos, da ja schon Code vorhanden ist und du das dann garnicht gebrauchen kannst! |
||
[BB2D | BB3D | BB+]
|
DonKrawallo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich werde mal versuchen mit dem Code von oben klar zu kommen. Wobei das Progamm beim starten immer folgende Fehlermeldung bringt: Runtime Error Illegal Memory address Gruß Don ![]() |
||
Absoluter Beginner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] dim Feld(4,4)
For n=1 To 8 For i=1 To 2 Repeat x=Rand(1,4) y=Rand(1,4) Until feld(x,y)=0 Feld(x,y)=n Next Next Erklärung: Als erstes mal ein 4*4-Array erstellen, da passen ja jetzt 16 Karten rein, jede Karte hat eine Nummer (1 bis 8). Beim füllen des Arrays muß man nur aufpassen das man jede Karte genau 2 mal "speichert" dabei muß man wiederrum aufpassen das da nicht schon eine Karte hinterlegt war. Das n gibt an welche Karte gerade dran ist, das i ist dazu da das jede Karte 2 mal gesichert wird. Jetzt werden x und y Koordinaten im Array zufällig gewählt, dies wird so lange gemacht bis die Position im Array noch unbelegt ist (keine Karte zugewiesen wurde). Wenn das nicht der Fall ist werden neue Koordinaten berechnet, ansonsten wird dem Array(x,y) die Kartennummer "mitgeteilt", und es geht wieder von vorne los, bis beide Next-Schleifen abgearbeitet sind, und das Array mit 2*8 Karten gefüllt worden ist Zitat: Hi,
das Prinzip ist einfach: gib jeder Karte noch eine Zufallszahl (hier 16 karten),zb; rnd (0,255) dabei spielt es keine Rolle ob 2 karten dann nachher mal die Gleiche zufalls Zahl bekommen dann das feld anhand der Zahlen sortieren mit BubbleSort und schon sind diese gemischt! Versteh ich nicht, sortieren damit die Zahlen gemischt sind ![]() |
||
Error Inside! |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, da gibt es jetzt ein kleines Memo-Tutorial !
https://www.blitzforum.de/viewtopic.php?t=956 probierts aus! |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group