Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Anfängerfrage? (READ | DATA)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 12.12.2004, 18:33    Titel: Anfängerfrage? (READ | DATA) Antworten mit Zitat

Hallo!

Ich habe über die Suchfunktion nichts über mein Problem gefunden, deshalb hoffe ich mal, dass ich nciths übersehen habe. lächeln

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. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 12.12.2004, 19:38    Titel: Antworten mit Zitat

Wenn man RESTORE schreibt, fängt READ immer wieder beim ersten DATA an.
Vor den ersten DATA-Block schreibst du einfach ein
Code:
BlaueBox:

und vor den 2. DATA-Block ein
Code:
GrueneBox:


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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 12.12.2004, 19:50    Titel: Antworten mit Zitat

Hi, danke;

Dann kann ich die DATA-Blöcke auch am Ende sammeln;
Ich benutz den Befehl halt zu selten verwundert
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 12.12.2004, 20:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 12.12.2004, 20:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 12.12.2004, 20:53    Titel: Antworten mit Zitat

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 zwinkern ) zu kleinen Sprites.
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 12.12.2004, 21:05    Titel: Antworten mit 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. 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 12.12.2004, 22:57    Titel: Antworten mit Zitat

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 lächeln
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz