CAOS-Programmierung: Text
<< Beispiele | Inhaltsverzeichnis | >>
Einfache Textausgabe
[Bearbeiten]Die Textausgabe bei DS funktioniert auch mittels Sprites. Die dafür vorhandenen Spritefiles sind:
- blackontransparentchars.s16
- whiteontransparentchars.s16
- greyontranschars.s16
- (noch die alte s16 Version)
Diese enthalten einen kompletten Zeichensatz , auf transparentem Hintergrund. Mit einem Zeichenprogramm (GIMP) ist es möglich einen eigenen
Zeichensatz zu erstellen.
Das darstellen der Zeichen übernimmt die engine , dafür gibt es in CAOS einige Befehle.( Immer als komplexer Agent)
Um einen Text in einem Agenten anzuzeigen sind folgende Schritte nötig:
PAT: FIXD part_id sprite_file first_image rel_x rel_y rel_ebene font_sprite z.B. pat: fixd 19 "ds world switcher" 26 45 120 0 "blackontransparentchars"
FRMT left_margin top_margin right_margin bottom_margin line_spacing character_spacing justification z.B. frmt 0 0 0 0 2 0 2 (2 Zeilen Zwischneraum Mitte )
PTXT text (string) (oder Variable) z.B sets va00 "Hallo " adds va00 wrld ov04 adds va00 " World " ptxt va00
Eine komfortable Möglichkeit vordefinierte Texte auszugeben ist die *.catalogue Datei. Dies ist eine spezielle Textdatei im Catalogue Ordner
und mit dem gleichen Namen wie der Zielagent. Der Zugriff erfolgt mit
READ catalogue_tag (string) offset (integer) z.B. ptxt read "World Switcher" 3 sucht im ds "world switcher.catlouge" nach dem tag "World Switcher" und zeigt den 5-ten String an Beispiel Inhalt aus der Datei # World Switcher.catalogue # This is the World Switcher's Catalogue information TAG OVERRIDE "World Switcher" "Bitte geben Sie hier einen Namen für Ihre Welt ein:" "Willkommen bei Docking Station!\n\n" "Bitte warten, wird geladen..." "Bitte bestätigen Sie das Löschen von\n\n[" <== dieser Test wird angezeigt ...
Hinweis: mit tint kann die Farbe des Textes geändert werden.
Ausgabe von integer Variablen als Text
[Bearbeiten]Da die Ausgabe mit ptxt nur Text erlaubt , ist es nötig integer oder float Variablen mit vtos (variable to string) umzuwandeln z.B
sets va00 "Hallo " adds va00 wrld ov04 adds va00 " World " setv va01 10 adds va00 vtos va01 ptxt va00
Die Umkehrung ist stof ( string to float)
Beispiel Rechner
[Bearbeiten]Nun als kleines Beispiel, der Rechner aus dem letzten Kapitel. Zuerst ein freundliches "Hallo (WELTNAME) World". Beim Klicken auf die Zahlen Knöpfe erscheint im Display die Partnr. Bei der Übergabe der Parameter (pat: butt ....) steht in Variable _P1_ die Partnr.
inst new: comp 2 23 20410 "rech" 38 0 2000 * pat: dull 1 "rech" 1 20 20 1 pat: butt 7 "rech" 2 2 50 80 0 [1] 1001 1 * wenn part 7 geklickt, dann script 1001 und Übergabeparameter in _P1_ part 7 anim [0] pat: butt 8 "rech" 4 2 100 80 0 [1] 1001 1 part 8 anim [0] pat: butt 9 "rech" 6 2 150 80 0 [1] 1001 1 part 9 anim [0] pat: butt 13 "rech" 8 2 200 80 0 [1] 1001 1 part 13 anim [0] pat: butt 4 "rech" 10 2 50 130 0 [1] 1001 1 part 4 anim [0] pat: butt 5 "rech" 12 2 100 130 0 [1] 1001 1 part 5 anim [0] pat: butt 6 "rech" 14 2 150 130 0 [1] 1001 1 part 6 anim [0] pat: butt 12 "rech" 16 2 200 130 0 [1] 1001 1 part 12 anim [0] pat: butt 1 "rech" 18 2 50 180 0 [1] 1001 1 part 1 anim [0] pat: butt 2 "rech" 20 2 100 180 0 [1] 1001 1 part 2 anim [0] pat: butt 3 "rech" 22 2 150 180 0 [1] 1001 1 part 3 anim [0] pat: butt 11 "rech" 24 2 200 180 0 [1] 1001 1 part 11 anim [0] pat: butt 10 "rech" 26 2 50 230 0 [1] 1001 1 part 10 anim [0] pat: butt 14 "rech" 28 2 100 230 0 [1] 1001 1 part 14 anim [0] pat: butt 16 "rech" 30 2 150 230 0 [1] 1001 1 part 16 anim [0] pat: butt 15 "rech" 32 2 200 230 0 [1] 1001 1 part 15 anim [0] pat: butt 17 "rech" 34 2 50 280 0 [1] 1000 1 part 17 pat: fixd 19 "rech" 1 20 20 5000 "blackontransparentchars" anim [0] part 19 frmt 0 0 0 0 2 0 2 sets va00 "Hallo " adds va00 wrld ov04 adds va00 " World " ptxt va00 attr 71 perm 60 elas 0 fric 100 accg 3 mvto 3400 8800 cmra 3400 8800 0 endm *************** scrp 2 23 20410 1001 * Ausgabe auf Anzeigeteil part 19 frmt 50 20 0 0 2 0 2 * in _P1_ steht die Partnr. setv va00 _P1_ * ein kleiner Test doif va00>10 setv va01 va00 addv va01 100 else setv va01 va00 endi * Wandelt Ganzzahl in Text und gibt Text aus ptxt vtos va01 endm *******Antwort scrp 2 23 20410 1000 setv va00 posl addv va00 30 setv va01 post addv va01 10 inst new: simp 2 11 20411 "rech" 36 36 4000 attr 195 bhvr 32 elas 30 fric 50 accg 3 clac 0 mvto va00 va01 velo rand -10 10 rand -15 -20 tick 8 endm scrp 2 11 20411 9 plne 4001 tick 0 wait 100 kill ownr endm rscr enum 2 23 20410 kill targ next enum 2 11 20411 kill targ next scrx 2 11 20411 9 scrx 2 23 20410 1000
<< Beispiele | Inhaltsverzeichnis | >>