#include # ifndef VOGLE # define VOGLE # include # endif typedef struct Netzelement { int eintrag; int* zeiger1; int* zeiger2; int* zeiger3; }NetzElement; typedef NetzElement *NE; /****************************************************************/ /* Fordert Speicher für 13 Strukturen dieses Netzelements an */ /* Falls kein Speicher mehr zur Verfügung ist, kommt */ /* Abbruchmeldung, und das Programm wird beendet. */ /****************************************************************/ extern NE Element_neu(); /****************************************************************/ /* Je nach Schwierigkeitsstufe (1,2 oder 3) wird versucht, von */ /* der Zielposition aus, Steineinträge zu verschieben. */ /* Am Ende ist Spielfeld verändert, so dass man es nun rück- */ /* wirkend wieder zur Zielposition führen muss. */ /****************************************************************/ extern NE Verschieben(NetzElement *,int); /****************************************************************/ /* Spielfeld wird aufgebaut, und zwar mit dem leeren Feld (0) */ /* in der Mitte und ansonsten von links oben entgegengesetzt im */ /* Uhrzeigersinn von der 1 bis zur 12. */ /* Von jedem Feld wird der 1.Zeiger auf das ihm gegenüberlie- */ /* gende gezeigt, der 2.Zeiger auf das ihm danachkommende und */ /* der 3.Zeiger ist bei den äusseren Felder ein NULL-Zeiger und */ /* bei den Feldern 0,2,6,10 zeigt er auf das noch zu erreichende*/ /* Feld. */ /****************************************************************/ extern NE Netz_neu(NetzElement *); /****************************************************************/ /* Der Feldeintrag mit dem leeren Eintrag, und der mit der zu */ /* verrückenden Zahl werden getauscht. */ /* Nun wird dass ganze Spielfeld aktualisiert (Zeiger) */ /****************************************************************/ extern NE Akt_Element(NetzElement *,int,int ); /****************************************************************/ /* Loeschen des vollständigen Netzes aus dem Speicher. */ /****************************************************************/ extern void Loeschen(NetzElement *); /****************************************************************/ /* Solange nicht jeder Feldeintrag genauso aussieht wie an der */ /* Zielposition wird nicht die Zahl 12 zurückgeliefert, also das*/ /* Spiel wird nicht beendet. Ansonsten wird es beendet. */ /****************************************************************/ extern int Ziel2(NetzElement *); /****************************************************************/ /* Die Schriftgröße wird festgelegt, und das Standartbild wird */ /* gezeichnet. Die Punkte werden festgelegt und je nach Feld- */ /* eintrag wird die richtige Zahl an die Position gezeichnet. */ /****************************************************************/ extern void Spielbild(NetzElement *,int ); /****************************************************************/ /* Das Spielnetz wird generiert. Je nach Schwierigkeitsgrad wird*/ /* Spielfeld kreiert. Solange nicht Zielposition erreicht ist */ /* geht Spiel weiter. Eingabe der zu verrückenden Zahlen je nach*/ /* Taste, Abbruch des Spiels durch irgendeine andere Taste. */ /****************************************************************/ extern int Spielen(int);