Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 24.05.2005, 17:04 Titel: GOSUB... |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 24.05.2005, 17:22 Titel: |
|
|
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 |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 24.05.2005, 17:23 Titel: |
|
|
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 |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 24.05.2005, 17:28 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 24.05.2005, 17:30 Titel: |
|
|
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 |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 24.05.2005, 17:33 Titel: |
|
|
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 |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 24.05.2005, 17:39 Titel: |
|
|
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 |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 24.05.2005, 17:44 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 24.05.2005, 17:50 Titel: |
|
|
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...
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 |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 24.05.2005, 18:00 Titel: |
|
|
Mmh,
Muss ich mir mal genauer angucken.
Hab noch nicht mit PUT/GET und so gearbeitet. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 24.05.2005, 18:28 Titel: |
|
|
Dazu gibt's unter www.qbasic.de ein gutes Tutorial von Meff.
jb |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 24.05.2005, 19:32 Titel: |
|
|
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! ;)" |  _________________ "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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 24.05.2005, 19:45 Titel: |
|
|
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 |
|
 |
A.K.

Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 24.05.2005, 19:46 Titel: |
|
|
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.... _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 25.05.2005, 13:26 Titel: |
|
|
Hi! Zu diesem Thema fällt mir mein StarWars-Programm ein.
http://forum.qbasic.at/viewtopic.php?t=944
Schau dir mal die SUB "Schreib" an. Die macht eigentlich, was du haben willst.  _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 25.05.2005, 15:46 Titel: |
|
|
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 |
|
 |
|