|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Crumbler
Anmeldungsdatum: 12.10.2005 Beiträge: 15
|
Verfasst am: 14.09.2007, 16:09 Titel: Mit PUT eins von 32 Arrays in Zufallsreihenfolge aufrufen |
|
|
Hallo!
Ich versuche gerade ein Maumau-Spiel grafisch umzusetzen und habe folgendes Problem:
Ich habe die Grafik der "Karten" jeweils in ein Array geschrieben (also insgesamt 32 Stück).
Ich kann die Karten nun nach belieben auf dem Bildschirm erscheinen lassen, ich möchte aber, dass QB die Karten mischt. Dies funktioniert nicht, ich zeige mal an einem Beispiel wie ich es vorhatte:
-----------------------------------------------------------------------------------
PUT (100, 100), k32%, PSET 'So funktioniert es
-----------------------------------------------------------------------------------
RANDOMIZE TIMER
mischen% = INT(RND * 32)
IF mischen% = 32 THEN gemischt$ = "k32"
PUT (100, 100), gemischt$, PSET 'und genau hier liegt das Problem
------------------------------------------------------------------------------------
Jetzt meckert QB rum, das das Datenfeld gemischt$ nicht definiert wurde.
(Obwohl ich es ja genau genommen mit der IF Schleife definiert habe...)
Wie bringe ich QB jetzt bei, was ich von ihm will?
Könnt ihr mir da helfen??? |
|
Nach oben |
|
|
Eternal_pain
Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.09.2007, 18:05 Titel: |
|
|
achja noch eins... schon wieder falsches forum!
"Spezielle Fragen" bezieht sich auf Bibliotheken wie UGL oder DQB... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 14.09.2007, 20:10 Titel: |
|
|
Jojo hat Folgendes geschrieben: | achja noch eins... schon wieder falsches forum! |
=> verschoben.
Zur Frage: Dieses Problem kann man sehr einfach lösen: Man muss mit dem Startindex bei PUT arbeiten! Wenn die 32 Bilder alle dieselbe Grösse haben, dann kannst Du sogar sehr einfach mit einem zweidimensionalen Array arbeiten.
Beispielcode (nicht getestet)
Code: | SCREEN 7
DIM a%(481, 31)
FOR i%=0 TO 31
' Bild i% generieren, z.B. BLOAD, ab .BMP laden usw.
GET (0, 0)-(47, 39), a%(0, i%)
NEXT i%
' Zufälliges Bild anzeigen
b% = CINT(INT(32! * RND))
PUT (10, 10), a%(0, b%), PSET |
Wichtig ist die Indexreihenfolge, d.h. in der QB-internen Speicheradressenberechnung sind die Indexe ganz links am niederwertigsten, die ganz rechts am höchstwertigen. Man kann dieses Verhalten übrigens mit
Code: | DIM a%(5, 5)
PRINT VARPTR(a%(0, 0))
PRINT VARPTR(a%(1, 0))
PRINT VARPTR(a%(0, 1)) |
sehr leicht verifizieren.
/edit: Praktische Anwendung im hier vorgestellten Spiel _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Crumbler
Anmeldungsdatum: 12.10.2005 Beiträge: 15
|
Verfasst am: 19.09.2007, 23:01 Titel: |
|
|
Danke,
ich habs jetzt aber anders (aber leider auch komplizierter) gelöst. Eure Lösungen waren natürlich alle gut, aber für meine Zwecke leider nicht geeignet. (Ich musste für jede Karte eine eigene Variable haben)
VIELEN DANK TROTZDEM! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|