Beispieldateien

Aufbau eines Projektes

----------

Ok. Wie sollte ein Projekt aussehen? Gut strukturiert. ;-) Eingebürgert hat sich eine Unterteilung nach Items, NPCs und Räumen.
Je nach Projekt sollte es auch noch ein Verzeichnis für die verzeichniseigenen Standardfiles, Logfiles etc. geben.
Um im Mud zwischen den Verzeichnissen zu navigieren und sie anzusehen, gibt es die Befehle cd und ls.
Den Inhalt eines Files kannst Du Dir mit more anschauen.

Hier das Beispiel eines Verzeichnisses mit minimaler Struktur:

>cd katapult
/players/sunrise/katapult

>ls
/players/sunrise/katapult: 4 files/directories
files.h       mon/         room/        obj/

>more files.h
#define HOME(x)       "/players/sunrise/katapult/"x
#define ROOM(x)       HOME("room/")x
#define MON(x)        HOME("mon/")x
#define OBJ(x)        HOME("obj/")x

>cd mon
/players/sunrise/katapult/mon

>ls
/players/sunrise/katapult/mon: 3 files/directories
holzkopf.c      hummel.c        wachholzkopf.c

>cd ../obj
/players/sunrise/katapult/obj

>ls
/players/sunrise/katapult/obj: 5 files/directories
katapult.c          schild.c            sonnenblumenkern.c
lappen.c            sonnenblume.c

>cd ../room
/players/sunrise/katapult/room

>ls
/players/sunrise/katapult/room: 6 files/directories
huegel.c  luft.c    weg1.c    weg2.c    weg3.c    weg4.c
Nochmal zur Erinnerung:
cd   ... wechselt das Verzeichnis
ls   ... zeigt dessen Inhalt an
more ... zeigt den Inhalt einer Datei an
Das files.h stellt Dir Makros (wie Aliase) zur Verfügung, mit denen Du ohne größere Probleme
auf Teilbereiche Deines Projektes zugreifen kannst. Ausschnitt aus weg2.c
#include "../files.h"

void create()
{
  ...

  AddExit("norden",  ROOM("weg3"));
  AddItem(MON("hummel"), REFRESH_DESTRUCT);
  AddItem(OBJ("lappen"), REFRESH_REMOVE);
}
Du siehst, mit dem Makro ROOM aus dem files.h kann ich den Ausgang angeben, ohne den kompletten Pfad hinschreiben zu müssen.
Und mit den Makros MON und OBJ kann ich selbiges bei AddItem tun.

Start » Magierhandbuch » Dokumentation » Programmierbeispiele » Projektstruktur
Valid HTML 4.01!