CAOS-Programmierung: Beispiele: Simpel

Aus Wikibooks

Mit Dockingstation[Bearbeiten]

Der nachfolgende Quelltext und die Erklärung sind von der Seite [[1]] übernommen
Die Autorin Jasmin Handwerker ist mit der Veröffentlichung ausdrücklich einverstanden
Ich habe einige Stellen angepasst.

Hinweis : Es muß die Datei hpot.c16 aus C3 im Images Ordner vorhanden sein (Oder eine selbst gemalte Grafik! folgt noch)
          Es muß die Datei drnk.wav aus C3 im Sound Ordner vorhanden sein. Steht die Dateien nicht zur Verfügung kann die Zeile weggelassen werden.
      


Der Quelltext


inst
new: simp 2 11 20400 "hpot" 2 0 3500
attr 195
bhvr 48
perm 60
accg 4
fric 100
elas 40

setv va00 game "CreatorX"       * alternativ mvto 6150 9150 
setv va01 game "CreatorY"       * cmra 6150 9150 0
doif va00 eq 0 and va01 eq 0    * löschen
   setv va00 5687               * löschen
   setv va01 3670               * löschen
endi                            * löschen
mvsf va00 va01                  * löschen

emit 8 .5
endm

scrp 2 11 20400 6
snde "dr10"
endm
scrp 2 11 20400 12
lock
snde "drnk"
stim writ from 79 1
wait 5
pose 1
wait 10
kill ownr
endm 
rscr
enum 2 11 20400 
kill targ
next
scrx 2 11 20400 12
scrx 2 11 20400 6

Diese Version ist ursprünglich für C3.Für Dockingstation die Zeile 'setv va00 5687 setv va01 3670' mit 'setv va00 6150 setv va01 9150' ersetzen.>br /> Nun zu den Erklärungen:

inst

Hiermit wird das Objekt "installiert". inst leitet immer den Beginn eines Objekts ein. Außerdem hat inst die Funktion, dass es nicht von anderen  
Programmen unterbrochen wird, also alles ohne Unterbrechung abgearbeitet wird.

new: simp 2 11 20400 "hpot" 2 0 3500

Jetzt wird das Objekt erstellt. simp bedeutet, dass es sich um ein simples Objekt handelt.
Die nächsten 3 Zahlen: 2 11 20400 sind wie folgt definiert:
2 ist family, 21 gender (hier Food) und 20400 die Skriptnummer.
"hpot" ist der Name der Sprite-Datei. Er muss in Anführungszeichen stehen und ohne die Endung .c16, da es sonst eine Fehlermeldung gibt, wenn man das 
Objekt in die Welt einfügen will.
Die nächsten beiden Zahlen beziehen sich auf die Spritedatei. Die erste Zahl gibt die Anzahl der Bilder in der Spritedatei an, hier ist die Anzahl 2. 
Die nächste Zahl gibt das Bild an, das als erstes gezeigt werden soll. Da die Nummerierung in einer Spritedatei immer mit 0 beginnt, muss man auch 0 
angeben, wenn man das erste Bild anzeigen will.
Die letzte Zahl gibt die Ebene an, in der das Objekt später in der Welt sichtbar sein soll.
Der Wert geht von 0 bis 5000, wobei 0 ganz hinten ist und 5000 ganz vorne. 3500 ist also ein Mittelwert und immer gut zu gebrauchen ist.

attr 195

attr bedeutet Attributes, also Attribute Flags.
Der Honigtopf soll tragbar sein, von der Maus aufgenommen werden können, Raumbegrenzungen haben und den Naturgesetzen unterliegen.
Die Werte werden addiert. attr 195 ist also 1 + 2 + 64 + 128 = 195.

bhvr 48

bhvr legt fest, was dem Creature erlaubt ist.
Auch bei bhvr werden die Werte addiert. 16 + 32 = 48.

perm 60

Durchlässigkeit. Werte zwischen 1 und 100 sind erlaubt.

accg 4

Beschleunigung. Werte zwischen 1 und 100 sind erlaubt.

fric 100

Reibung. Werte zwischen 1 und 100 sind erlaubt.

elas 40

Elastizität. Werte zwischen 1 und 100 sind erlaubt.

setv va00 game "CreatorX" / setv va01 game "CreatorY"

Mit setv werden Variablen Werte zugewiesen.
In unserem Fall werden den Variablen va00 und va01 die Spielvariablen CreatorX und CreatorY zugewiesen.

doif va00 eq 0 and va01 eq 0

Nun folgt eine doif-Schleife. Sie überprüft, ob die Variablen va00 und va01 gleich 0 sind. eq bedeutet equals und mit and verknüpft man zwei Aussagen.

setv va00 5687 / setv va01 3670

Diese beiden Variablenzuweisungen werden nur ausgeführt, wenn das Ergebnis der doif-Schleife wahr war, also beide Variablen 0 sind.
In diesem Fall werden den Variablen zwei Integerwerte zugewiesen (also ganze Zahlen).

endi

Mit endi wird die doif-Schleife beendet.

mvsf va00 va01

Der Befehl mvsf bewegt das Objekt zu den nachfolgenden Koordinaten. In diesem Fall ist die x-Koordinate die Variable va00 und die y-Koordinate die Vaiable va01.

emit 8 .5

emit sagt dem Objekt, dass es regelmäßig eine Menge an Stoffen an seine Umgebung abgeben soll. 8 ist die Substanz und .5 die Menge.
Folgende Substanzen können verteilt werden:
1   = Licht
2   = Hitze,
3   = Feuchtigkeit 
4   = verfaulende Nährstoffe
5   = Wassermassen
6   = Proteine
7   = Kohlenhydrate
8   = Fette
9   = Blumen
10 = Maschinerie
11 = Eier
12 = Norns
13 = Grendels
14 = Ettins
15 = Norn-Heim
16 = Grendel-Heim
17 = Ettin-Heim
18 = Geräte 

endm

Damit wird das Installationsskript beendet und auch andere Unterskript beendet man damit.

scrp 2 11 20400 6

scrp sind Unterskripte. Bei diesen scrp wird zuerst wieder die family Nummer, danach die gender Nummer und die selbst gewählte Skriptnummer genannt  
(siehe oben bei inst). Am Ende kommt die Nummer des Unterskripts. 6 bedeutet Kollisionsskript.

snde "dr10"

Mit snde ruft man den Befehl auf, der eine wav-Datei abspielen soll. Nach dem Befehl kommt in Anführungszeichen der Name der wav-Datei ohne Endung.
Das Kollisionsskript bewirkt also, dass der Sound dr10.wav abgespielt wird, wenn der Norn den Agenten fallen lässt.

scrp 2 11 20400 12

Dieses Unterskript ist das Essensskript.

lock

lock bewirkt, dass alle Befehle, die jetzt ablaufen nicht von anderen Programmen unterbrochen werden können.

stim writ from 79 1

stim writ sendet einen Stimulus zu dem Creature. Die erste Zahl ist der Stimulus, in unserem Fall gegessenes Futter. Die zweite Zahl gibt an wieviel.

wait 5

Der Befehl wait blockiert das Skript für die angegeben Zahl von Ticks. In unserem Fall 5.

pose 1

Pose zeigt ein Bild von der Spritedatei. Will man, dass ein anderes Bild von der Spritedatei angezeigt wird, benutzt man diesen Befehl und gibt die 
Bildnummer an. Man beachte dabei, dass auch hier wieder der Bildzähler mit 0 beginnt (also 0 das erste Bild ist).

kill ownr

Jetzt lassen wir das Objekt mit diesem Befehl verschwinden.

Nochmal in der Zusammenfassung: Mit dem Essenscript bewirken wir, dass beim Essen die Wav-Datei drnk abgespielt wird, das Creature einen Essensstimulus erhält, einige Ticks gewartet wird, das Objekt sein Aussehen verändert und schließlich verschwindet, da es ja gegessen wurde.

rscr

rscr leitet das Removeskript ein. Damit wird das Objekt und seine Unterskripte aus der Welt entfernt. Man sollte immer bei seinen Agenten auch ein 
Removeskript dazu fügen.

enum 2 11 20400

Mit enum sucht man das Objekt. Dahinter stehen wieder die 3 Zahlen, die schon oben erläutert wurden. enum leitet eine Schleife ein, denn es wird jetzt 
jedes Objekt überprüft, bis das angegebene gefunden wurde.

kill targ

Nun wird das Objekt aus der Welt entfernt.

next

next beendet die enum-Schleife.

scrx 2 11 20400 12 / scrx 2 11 20400 6

Nun werden auch die Skripte des Objekts gelöscht. Dies geschieht mit scrx und den Skriptnummern.


Siehe c16 Datei für das Beispiel

inst
new: simp 2 11 20400 "hpot" 2 0 3500
attr 195
bhvr 48
perm 60
accg 4
fric 100
elas 40
setv va00 game "CreatorX"
setv va01 game "CreatorY"
doif va00 eq 0 and va01 eq 0
setv va00 5687
setv va01 3670
endi
mvsf va00 va01
emit 8 .5
endm
scrp 2 11 20400 6
snde "dr10"
endm
scrp 2 11 20400 12
lock
snde "drnk"
stim writ from 79 1
wait 5
pose 1
wait 10
kill ownr
endm
rscr
enum 2 11 20400
kill targ
next
scrx 2 11 20400 12
scrx 2 11 20400 6

Dockingstation ist nicht notwendig[Bearbeiten]

Für diese Beispiel ist meine c16 Datei nötig.

folgt noch