Ein einfaches Objekt
![]()
// Ein Maiskolben (nach Original "maiskolben.c" in Kogida) // // 05.08.99 Holger@Wunderland inherit "std/thing"; // Wir erben das Standard-Ding #include <properties.h> // die wichtigen Properties #include <defines.h> // ein paar nuetzliches Defines void create() { // Bin ich kein Klon? -> Dann brich das create() gleich ab! if (!clonep()) return; // auch die Mutterklasse (Ding) braucht ihr create() // NIEMALS VERGESSEN! ::create(); // Langbeschreibung setzen SetProp(P_LONG, "Ein praechtiger grosser gelber Maiskolben."); // den Singular-Name setzen SetProp(P_NAME, "Maiskolben"); // den Plural-Name setzen (ist zufaellig gleich den Singular) SetProp(P_PLURAL,"Maiskolben"); // Wir fuegen dem Name ein Adjektiv hinzu. Die Grammatik wird // automatisch richtig ermittelt, deshalb ungebeugt. SetProp(P_NAME_ADJ, "gross"); // Das Geschlecht setzen (maennlich) SetProp(P_GENDER, MALE); // einen gewissen Wert setzen in Grundeinheiten (Bernsteine) SetProp(P_VALUE, 10 ); // das Gewicht setzen in Gramm SetProp(P_WEIGHT, 200 ); // die 'Sperrigkeit' bzw 'Unhandlichkeit' setzen SetProp(P_BULKINESS, 70 ); // Singular und Plural Id setzen (damit spricht man das Objekt an) AddId( ({ "maiskolben", "kolben", "mais" }), ({ "maiskolben", "kolben", "mais" })); // Geruch des Maiskolbens setzen SetProp(P_SMELL, "Der Maiskolben riecht nach garnichts."); // Und noch ein paar Details zum untersuchen AddDetail( "schale", "Der Maiskolben ist bereits geschaelt."); AddDetail( ({ "koerner", "korn" }), "Der Maiskolben ist ganz reif. Die Koerner sind steinhart."); // Jetzt fuegen wir ein Kommando 'essen' hinzu, um eine Meldung auszu- // geben, wenn ein Spieler versucht den Kolben zu essen. // Das erste Argument ist ein Kommandostring. Gruppen sind durch '&' // getrennt. Innerhalb einer Gruppe sind die Alternativen durch '|' // getrennt. Aus jeder Gruppe muss mindestens eine Alternative // vorliegen, dann wird 'ess_func' aufgerufen. Liegt nur die erste // Gruppe vor und keine Wort aus der zweiten Gruppe, wird die Fehler- // meldung in Argument 3 ausgegeben. Moegliche Eingaben des Spielers // koennten bei diesen AddCmd() zum Beispiel sein: // 'iss maiskolben' , 'esse den kolben' oder auch 'iss den mais' // Stimmt nur eine Alternative aus der ersten Gruppe, (Bsp: // 'iss korn', wird "Was willst Du essen?" als Default-Fehlermeldung // gesetzt. Gibt es keine weiteren Objekte, die die Syntax verwerten // koennen, wird diese Meldung statt "Wie bitte?" ausgegeben. Gibt es // ein Objekt in der Naehe des Spielers, das 'iss korn' verarbeitet // (z.B. ein Maiskorn) bleibt die Fehlermeldung ohne Einfluss. AddCmd( "iss|esse|beisse&maiskolben|kolben|mais", "ess_func", "Was willst Du essen?"); } // Diese Funktion wird durch das AddCmd() aufgerufen, wenn der Spieler // die richtige Syntax eingegeben hat. Fuehrt sie zu einem Erfolg, muss // sie 1 returnen. Ansonsten muss 0 zurueckgegeben werden, damit andere // Objekte die Chance bekommen die Syntax zu verwerten. Da hier eine // Meldung ausgegeben wird, geben wir 1 zurueck. int ess_func() { // write() gibt eine Meldung an den aktiven Spieler aus (der der versucht, // den Kolben zu essen. break_string() bricht vorher den Ausgabetext auf // die normale Terminalfensterbreite um. write(break_string("Du beisst genuesslich in den Maiskolben, doch Du " "musst feststellen, dass er viel zu hart ist, um ihn zu essen. Um Deine " "Zaehne nicht zu ruinieren, gibst Du auf.")); // say() gibt eine Meldung an die anderen, umstehenden Lebwesen aus, ausser // an den aktiven Spieler. Die anderen Lebwesen/Spieler sehen also, was der // aktive Spieler gerade tut. // this_player() ist der aktive Spieler. // this_player()->name(WER, NAME_AUTO|NAME_CAP) liefert den Namen des aktiven // Spielers im Nominativ und mit dem ersten Buchstaben gross geschrieben. // Dahinter wird der restliche Text einfach angehangen. Das '\n' am // Ende markiert einen Zeilenumbruch. say(this_player()->name(WER, NAME_AUTO|NAME_CAP)+" beisst sich an einem Maiskolben " "fast die Zaehne aus...\n"); // Wir geben 1 zurueck, weil die Verarbeitung des Kommandos erfolgreich war. // Dass der Spieler den Maiskolben nicht essen kann, spielt dafuer keine // Rolle, denn es geht nur darum, dass der Befehl an sich verstanden wurde. return 1; } |
| Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Maiskolben | |
|
| |