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:

GOSUB...

 
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
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 24.05.2005, 17:04    Titel: GOSUB... Antworten mit Zitat

Hallo
Hatte mit folgenedes gedacht was aber nicht funzt:
Code:

CLS
DO
X$ = INKEY$
SELECT CASE X$
CASE CHR$(27): END
CASE CHR$(13): EXIT DO
CASE CHR$(65) TO CHR$(90): TEXT$ = TEXT$ + X$: GOSUB X$
END SELECT
LOOP
OPEN "C:\TEXT.TXT FOR OUTPUT AS #1
PRINT #1, TEXT$
CLOSE #1
END

A:
PRINT "A"
RETURN

B:
PRINT "B"
RETURN

...


So es funzt auch alles außer, dass er nicht in GOSUB X$ geht.
Warum geht das nicht? Kann ich keine Variablen für SUB nehmen?
Und wenn gibt es eine andere Lösung außer eine Abfragung mit IF/SELECT?
Dann müsste ich ja für jeden Buchstaben und jedes Zeichen eine eigene Zeile in der Abfragung schreiben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 24.05.2005, 17:22    Titel: Antworten mit Zitat

Hallo!

Ein
Code:

GOSUB Stringvariable

funzt leider nicht...

Da musst du schon manuell hinschreiben.

Warum aber arbeitest du in deinem Programm überhaupt mit GOSUB?

Anstatt
Code:

CASE CHR$(65) TO CHR$(90): TEXT$ = TEXT$ + X$: GOSUB X$

könntest du doch genauso gut
Code:

CASE CHR$(65) TO CHR$(90): TEXT$ = TEXT$ + X$: PRINT X$

schreiben...

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 24.05.2005, 17:23    Titel: Antworten mit Zitat

Leider kann man weder bei GOSUB noch bei GOTO oder sonst irgendeiner Sprunganweisung Strings als Marke verwenden.
(Nebenbei: GOSUB und GOTO solltest du nach möglichkeit eh vermeiden - Spaghetticode...)

Musst du wirklich für jede einzelne Taste einen eigenen behandler schreiben? Beschreib mal die Aufgabe, die der Code übernehmen soll, vllt lässt sich ja etwas optimieren.
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 24.05.2005, 17:28    Titel: Antworten mit Zitat

Also
Code ist in etwa der gleiche. Bloß alles läuft im SCREEN 12 Modus
und wenn ich A drücke springt er zu SUB A:
Dort malt er mir dann ein A auf den Bildschirm. Das ganze soll ein Art Editor werden. Später will ich den Text dann auch mal in eine Grafikdatei abspeichern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 24.05.2005, 17:30    Titel: Antworten mit Zitat

jb hat Folgendes geschrieben:

Anstatt
Code:

CASE CHR$(65) TO CHR$(90): TEXT$ = TEXT$ + X$: GOSUB X$

könntest du doch genauso gut
Code:

CASE CHR$(65) TO CHR$(90): TEXT$ = TEXT$ + X$: PRINT X$

schreiben...


-no comment-

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 24.05.2005, 17:33    Titel: Antworten mit Zitat

Dann guck mal was ich geschrieben hab.
Ich lasse in jeder SUB einen Buchstaben malen.
Und zwar nicht den gleichen, wie wenn ich PRINT X$ mache, sondern wie in einem Grafikprogramm. Wofür sonst SCREEN 12
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 24.05.2005, 17:39    Titel: Antworten mit Zitat

du meinst mit den Drawing Primitives?

LINE (100, 100)-(102, 120)
...

Dazu gibt es andere ansätze. Schau mal unter Font-Routinen, (google)
Die meisten speichern die Zeichenmuster in einer Datei, hat den Vorteil, dass dein Programm kleiner bleibt
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 24.05.2005, 17:44    Titel: Antworten mit Zitat

Jo so mache ich es.
Hab das erstmal als Aushilfe genommen.
Will das später dann auch anders machen.

Wie sind denn solche Routinen aufgebaut?
Auch in SUBs? Oder in externen Dateien?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 24.05.2005, 17:50    Titel: Antworten mit Zitat

noop hat Folgendes geschrieben:

Dann guck mal was ich geschrieben hab.
Ich lasse in jeder SUB einen Buchstaben malen.
Und zwar nicht den gleichen, wie wenn ich PRINT X$ mache, sondern wie in einem Grafikprogramm. Wofür sonst SCREEN 12

OK, dann hab ich's falsch verstanden. Vielleicht lag's aber auch nicht allein an mir... zwinkern

Zu deiner Frage: Ich würde mir vorher überlegen, wie groß ein Buchstabe sein soll.
Sagen wir mal, er solle 5*7 Pixel groß sein.
Dann legen wir ein Feld so an:
Code:

DIM Buchstaben%(35, 0 TO 255)

Der zweite Index ist für jedes einzelne Zeichen.
Nun müssen nur noch Buchstaben in das Array eingelesen werden; diese musst du aber dann selbst designen.

Das Einlesen klappt dann so:
Code:

 CLS
 LINE, etc...
 GET (xStart, yStart)-(xEnde, yEnde), Buchstaben(0, AsciiWert)


Die Ausgaberoutine ist denkbar einfach:
Code:

SUB Ausgabe (x, y, Text$)

 FOR i = 1 TO LEN(Text$)
  PUT (x, y), Buchstaben(0, ASC(MID$(Text$, i, 1))
  x = x + 10
 NEXT i

END SUB


Vor der PUT-Anweisung müsste noch ein Code, der überprüft, ob sich x
und y im zulässigen Bereich befinden.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 24.05.2005, 18:00    Titel: Antworten mit Zitat

Mmh,
Muss ich mir mal genauer angucken.
Hab noch nicht mit PUT/GET und so gearbeitet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 24.05.2005, 18:28    Titel: Antworten mit Zitat

Dazu gibt's unter www.qbasic.de ein gutes Tutorial von Meff.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 24.05.2005, 19:32    Titel: Antworten mit Zitat

ansonsten könntest du auch ne Font-Sub machen:
Code:
SUB font(buchstabe AS STRING)
SELECT CASE buchstabe
CASE "A"
 'a zeichnen
CASE "B"
 'b zeichnen
....
END SELECT
END SUB

dann eventuell noch ne 2. Sub:
Code:
SUB print2(kette AS STRING)
FOR n = 1 TO LEN(kette)
 font MID$(kette, n, 1)
NEXT N

das ganze geht einfach so:
Code:
print2 "Hallo Welt! ;)"
grinsen
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 24.05.2005, 19:45    Titel: Antworten mit Zitat

Ja, nur der Trick bei meiner Varainte war, dass der ganze
SELECT CASE Block wegfällt, was z.B. bei Spielen, in denen man diese
Schrift benutzt, eine Geschwindigkeitsoptimierung darstellt...

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 24.05.2005, 19:46    Titel: Antworten mit Zitat

oder wenn es dir nicht darum geht WIE es funktioniert sondern nur das du verschiedene Schriften benutzen kannst, die du auch noch kursiv, fett, unterstrichen, durchgestrichen, transparent und nicht transparent darstellen kannst dann empfehle ich dir eine FONT-Lib zu benutzen.

ZUFÄLLIG kenn ich da eine:

www.iconsoft.de/?show=aklib_download

dort die AK-Font-Lib runterladen, readme.txt lesen und ausprobieren.
Eine kleine Auswahl an Schriften die du benutzen kannst findest du unter:

www.iconsoft.de/?show=aklib_archiv

Dort gibts auch ganz unten einen Font-Editor (von ZaPPa) um eigene Fonts zu malen.

MFG A.K.

ein bischen Werbung muß sein....lächeln
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 25.05.2005, 13:26    Titel: Antworten mit Zitat

Hi! Zu diesem Thema fällt mir mein StarWars-Programm ein. grinsen

http://forum.qbasic.at/viewtopic.php?t=944

Schau dir mal die SUB "Schreib" an. Die macht eigentlich, was du haben willst. cool
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 25.05.2005, 15:46    Titel: Antworten mit Zitat

Yo, danke erstmal.
Werd mich da mal durcharbeiten.
Mir geht's um beides. Zu rallen wie ich sowas mache und um gute schriften.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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