CAOS-Programmierung: Text

Aus Wikibooks

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