#include #include #ifndef _GRIDHUNT_INCLUDED_ #define _GRIDHUNT_INCLUDED_ extern "C" { #include #include #include int abs(int); } #ifndef FALSE #define TRUE 1 #define FALSE 0 #endif extern "C" int random(); extern "C" void srandom(time_t); #define GRIDX 30 #define GRIDY 30 #define MAX_TEAM 6 // HERE ARE THE USER-DEFINES // #define GRAPH #define MARK(x) cout << x << "\n"; #define MAX(x,y) ((x)>(y)?(x):(y)) class Coor { public: Coor(int x=-1,int y=-1); int x; int y; void print(); int operator == (Coor&); }; class Mobile { Coor cds; // internal variables char name[40]; int do_move(int,int); public: Mobile(char* name="SomeMobile"); void set_name(char *); char *get_name(); void set_pos(int, int); Coor my_pos(); int move(int); int distance(const Mobile&); void print_pos(); void teleport(); void reset(); }; class Monster : public Mobile { public: int move(); }; class Player : public Mobile { int turns; int wins; int c_pos; int c_dis; int c_mov; int a_pos; int a_dis; int a_mov; void tick(); public: Player(char* name="Nobody"); Coor monster_pos(); int monster_dist(); Coor player_pos(const Player&); int player_dist(const Player&); int move(int); void reset(); void print_stats(int); int teleport(); /* just an overload for cheaters */ friend update(); }; /* now the extern declarations */ extern Coor ERROR_COORD; extern Monster *Mobptr; extern int dice(int); extern int int_sqr(int); extern Player team1; extern Player team2; extern Player team3; extern Player team4; extern Player team5; extern Player team6; extern void hunt1(); extern void hunt2(); extern void hunt3(); extern void hunt4(); extern void hunt5(); extern void hunt6(); extern void plotgraph(); extern int games, moves; #endif