|
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 |
Gremlin
Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 12.12.2004, 18:33 Titel: Anfängerfrage? (READ | DATA) |
|
|
Hallo!
Ich habe über die Suchfunktion nichts über mein Problem gefunden, deshalb hoffe ich mal, dass ich nciths übersehen habe.
Mein Vorhaben ist folgendes:
Ich möchte aus einem String (später aus Datei gelesen) ein Zeichen herausfiltern und analysieren (später ein Levelaufbau für ein quasi-Pacmanspiel);
Wenn das Zeichen "*" ist, dann soll testweise eine blaue Box zeichnen, bzw. eine grüne, wenn das Zeichen "/" war.
So weit so gut; nur hab ich jetzt ein Problem mit den DATAs, da ich nicht weiß wie ich mitten in einen DATA-Block springen kann, denn wenn ich Restore benutze, dann hab ich nur blaue Boxen, wenn ichs weglasse, hab ich eine blaue und eine grüne, bzw gar keine, wenn mein String dann länger als 2 Zeichen ist.
Code: | DIM level$(22)
SCREEN 13
CLS
' Hier Titelscreen einf?gen
' Hier Level laden einf?gen
level$(1) = "*/**"
FOR a = 0 TO 21
FOR b = 0 TO LEN(level$(1)) - 1
cur$ = MID$(level$(a), b + 1, 1)
IF cur$ = "*" THEN
DATA 1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1
DATA 1,1,1,1,1,1,1,1
FOR c = 0 TO 7
FOR d = 0 TO 7
READ x
PSET (b * 8 + c, a * 8 + d), x
NEXT d
NEXT c
END IF
IF cur$ = "/" THEN
DATA 2,2,2,2,2,2,2,2
DATA 2,2,2,2,2,2,2,2
DATA 2,2,2,2,2,2,2,2
DATA 2,2,2,2,2,2,2,2
DATA 2,2,2,2,2,2,2,2
DATA 2,2,2,2,2,2,2,2
DATA 2,2,2,2,2,2,2,2
DATA 2,2,2,2,2,2,2,2
FOR c = 0 TO 7
FOR d = 0 TO 7
READ x
PSET (a * 8 + c, b * 8 + d), x
NEXT d
NEXT c
END IF
NEXT b
NEXT a |
Das ist mein bescheidener Code, der vom Äußeren her später angepasst wird.
Wie kann ich das nun ändern? _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt. |
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 12.12.2004, 19:38 Titel: |
|
|
Wenn man RESTORE schreibt, fängt READ immer wieder beim ersten DATA an.
Vor den ersten DATA-Block schreibst du einfach ein
und vor den 2. DATA-Block ein
Die ganzen DATA-Blöcke samt "BlaueBox:" und "GrueneBox:"kannst du dann ans Ende deines Programms oder so hinschieben, wo sie keinen stören, und nimmst folgenden Code:
Code: | IF cur$ = "*" THEN
RESTORE BlaueBox
FOR c = 0 TO 7
FOR d = 0 TO 7
READ x
PSET (b * 8 + c, a * 8 + d), x
NEXT d
NEXT c
END IF
IF cur$ = "/" THEN
RESTORE GrueneBox
FOR c = 0 TO 7
FOR d = 0 TO 7
READ x
PSET (a * 8 + c, b * 8 + d), x
NEXT d
NEXT c
END IF
|
_________________
|
|
Nach oben |
|
|
Gremlin
Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 12.12.2004, 19:50 Titel: |
|
|
Hi, danke;
Dann kann ich die DATA-Blöcke auch am Ende sammeln;
Ich benutz den Befehl halt zu selten _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt. |
|
Nach oben |
|
|
Kai Bareis
Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 12.12.2004, 20:25 Titel: |
|
|
warum benutzt du nicht Code: | Line(x,y)-(x+8,y+8),farbe,BF |
_________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 12.12.2004, 20:42 Titel: |
|
|
Kai Bareis hat Folgendes geschrieben: | warum benutzt du nicht Code: | Line(x,y)-(x+8,y+8),farbe,BF |
|
Ich gehe davon aus, dass die Grafiken noch gedesignt werden und somit die jetzigen unifarbigen Rechtecke nur Platzhalter darstellen.
@Gremlin: Fast noch geeigneter als DATA wären kleine .BMP-Grafiken, die Du zu Beginn des Programms in ein PUT-Feld lädst (dies kann meine .BMP-Bibliothek). Der Vorteil wäre dort, dass Du mit einem Werkzeug wie Adobe Photoshop all Deine Grafikelemente designen kannst. Siehe dazu
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/BilderVerwenden.html _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Gremlin
Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 12.12.2004, 20:53 Titel: |
|
|
Na, auf grafischer Ebene wirds ja kein großes Projekt.
Deshalb kann ich auf solche Zusatzmittel gut verzichten.
Und ja: Diese momentan noch Boxen werden später (jetzt, in diesem Moment ) zu kleinen Sprites. _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 12.12.2004, 21:05 Titel: |
|
|
Oh ja, ich kenne ansonsten auch noch gut die Commodore 64-Zeiten, als man für seine Sprites kariertes Schreibblockpapier holte, mit einem Lineal schön seine 24x21 Häuschen anriss und mit Bleistift durch Häuschen ausmalen die Pixel setzte. Anschliessend ging es ans grosse Binär-nach-Dezimal-Kopfrechnen, in dem man noch zwei vertikale Hilfslinien einzeichnete, die die Breite 24 in 3x8 Bytes unterteilten und anschliessend die Bitwerte zusammenzählte und schlussendlich als DATA-Zeilen eintippte, die dann mit READ und POKE ins RAM geschrieben das Sprite ergaben.
Sogar eigene Zeichensätze liess ich damals mit dieser Methode entstehen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Gremlin
Anmeldungsdatum: 12.12.2004 Beiträge: 142 Wohnort: Heinsberg
|
Verfasst am: 12.12.2004, 22:57 Titel: |
|
|
Zitat: | Oh ja, ich kenne ansonsten auch noch gut die Commodore 64-Zeiten, als man für seine Sprites kariertes Schreibblockpapier holte, mit einem Lineal schön seine 24x21 Häuschen anriss und mit Bleistift durch Häuschen ausmalen die Pixel setzte. |
So mach ich das grade auch, nur mit 8x8 Kästchen und einem simplen Übertragen (Clone von einem Pacman-ähnlichem Spiel)
Der Levelaufbau steht jetzt fast, nur Text muss er noch erkennen, bzw. richtig ausgeben _________________ Tja, hier konnte ihre Werbung stehen.
Pech gehabt. |
|
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.
|
|