summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBradley Smith2008-01-21 00:16:45 +0000
committerBradley Smith2008-01-21 00:16:45 +0000
commite6e7222d5a730368ed4e84c2e0f55427460e5230 (patch)
treee608410401099ccebe7ffa21de9336d78c78efc9 /include
downloadgnurobots-e6e7222d5a730368ed4e84c2e0f55427460e5230.tar.gz
Imported GNU robots from CVS.
Signed-off-by: Bradley Smith <brad@brad-smith.co.uk>
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am27
-rw-r--r--include/api.h43
-rw-r--r--include/configs.h63
-rw-r--r--include/grobot.h80
-rw-r--r--include/main.h10
-rw-r--r--include/map.h57
-rw-r--r--include/sign.h3
-rw-r--r--include/userinterface.h211
8 files changed, 494 insertions, 0 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644
index 0000000..bdd9f2d
--- /dev/null
+++ b/include/Makefile.am
@@ -0,0 +1,27 @@
+##
+## include/Makefile.am
+##
+## GNU Robots is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## GNU Robots is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with GNU Robots; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+
+EXTRA_DIST =\
+ api.h\
+ configs.h\
+ map.h\
+ main.h\
+ grobot.h\
+ sign.h\
+ userinterface.h
+
diff --git a/include/api.h b/include/api.h
new file mode 100644
index 0000000..e04f27b
--- /dev/null
+++ b/include/api.h
@@ -0,0 +1,43 @@
+/* Robot API for the GNU Robots game */
+
+/* Copyright (C) 1998 Jim Hall, jhall1@isd.net */
+
+/*
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef _API_H
+#define _API_H
+
+#include <glib.h>
+#include <guile/gh.h> /* GNU Guile high */
+
+void api_init (void);
+
+/* Functions */
+SCM api_robot_turn (SCM s_n);
+SCM api_robot_move (SCM s_n);
+SCM api_robot_smell (SCM s_th);
+SCM api_robot_feel (SCM s_th);
+SCM api_robot_look (SCM s_th);
+SCM api_robot_grab (void);
+SCM api_robot_zap (void);
+SCM api_robot_stop (void);
+
+SCM api_robot_get_shields (void);
+SCM api_robot_get_energy (void);
+SCM api_robot_get_score (void);
+
+#endif /* _API_H */
diff --git a/include/configs.h b/include/configs.h
new file mode 100644
index 0000000..b3d5125
--- /dev/null
+++ b/include/configs.h
@@ -0,0 +1,63 @@
+#ifndef CONFIGS_H
+#define CONFIGS_H
+
+#define TILE_SIZE 16
+#undef USE_MITSHM
+
+#ifdef PKGLIBDIR
+#define MODULE_PATH PKGLIBDIR
+#else
+#ifdef ABS_TOP_BUILDDIR
+#define MODULE_PATH ABS_TOP_BUILDDIR "/lib/.libs"
+#else
+#define MODULE_PATH "lib/.libs"
+#endif /* ABS_TOP_BUILDDIR */
+#endif /* PKGLIBDIR */
+
+#ifndef MODULE_PATH_ENV
+# define MODULE_PATH_ENV "GNU_ROBOTS_PLUGIN_PATH"
+#endif
+
+#ifndef MAPS_PATH_ENV
+# define MAPS_PATH_ENV "GNU_ROBOTS_MAPS_PATH"
+#endif
+
+#ifndef SCRIPTS_PATH_ENV
+# define SCRIPTS_PATH_ENV "GNU_ROBOTS_SCRIPTS_PATH"
+#endif
+
+#define MAX_PATH 256
+
+/* Defaults */
+#define DEFAULT_MAP "maze.map"
+#define DEFAULT_SCRIPT "mapper.scm"
+
+/* Symbolic constants */
+#define SPACE ' '
+#define FOOD '+'
+#define PRIZE '$'
+#define WALL '#'
+#define BADDIE '@'
+#define ROBOT 'R'
+
+/* Directions */
+#define NORTH 0
+#define EAST 1
+#define SOUTH 2
+#define WEST 3
+
+/* For all displays */
+#define SLEEP_TIME 200 /* in milliseconds */
+#define USLEEP_TIME 200000 /* in microseconds */
+#define USLEEP_MULT 16 /* not used yet --jh */
+
+#define DEFAULT_ENERGY 1000
+#define DEFAULT_SHIELDS 100
+
+#define DEFAULT_MAP_COLUMNS 40
+#define DEFAULT_MAP_ROWS 20
+
+#define PKGINFO PACKAGE_NAME " " VERSION
+#define COPYRIGHT "Copyright (C) 1998,1999,2000 Jim Hall <jhall1@isd.net>"
+
+#endif /* CONFIGS_H */
diff --git a/include/grobot.h b/include/grobot.h
new file mode 100644
index 0000000..1ef0031
--- /dev/null
+++ b/include/grobot.h
@@ -0,0 +1,80 @@
+#ifndef _G_ROBOT_H
+#define _G_ROBOT_H
+/* MACROS */
+
+#include <glib-object.h>
+#include <glib.h>
+#include "userinterface.h"
+#include "map.h"
+
+G_BEGIN_DECLS
+
+extern GType _g_robot_type;
+
+typedef struct _GRobot GRobot;
+
+struct _GRobot {
+ GObject object;
+
+ gint x;
+ gint y;
+ gint dir;
+ glong score;
+ glong energy;
+ glong shields;
+ glong shots;
+ glong units;
+
+ UserInterface *ui;
+ Map *map;
+};
+
+typedef struct _GRobotClass GRobotClass;
+
+struct _GRobotClass {
+ GObjectClass parent_class;
+
+ void (*death) (GRobot *robot);
+};
+
+#define G_TYPE_ROBOT (_g_robot_type)
+#define G_IS_ROBOT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ROBOT))
+#define G_IS_ROBOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_ROBOT))
+#define G_ROBOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_ROBOT, GRobotClass))
+#define G_ROBOT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ROBOT, GRobot))
+#define G_ROBOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_ROBOT, GRobotClass))
+
+/* some convenient macros */
+#define G_ROBOT_POSITION_X(robot) ((robot)->x)
+#define G_ROBOT_POSITION_Y(robot) ((robot)->y)
+
+/* normal GObject stuff */
+GType g_robot_get_type (void);
+
+/* Our object functions */
+GRobot* g_robot_new (int x,
+ int y,
+ int dir,
+ long score,
+ long energy,
+ long shield,
+ long units,
+ long shots,
+ UserInterface *ui,
+ Map *map);
+
+void g_robot_turn (GRobot *robot, gint num_turns);
+gboolean g_robot_move (GRobot *robot, gint steps);
+gboolean g_robot_smell (GRobot *robot, gchar *str);
+gboolean g_robot_feel (GRobot *robot, gchar *str);
+gboolean g_robot_look (GRobot *robot, gchar *str);
+gboolean g_robot_grab (GRobot *robot);
+gboolean g_robot_zap (GRobot *robot);
+gboolean g_robot_stop (GRobot *robot);
+glong g_robot_get_shields (GRobot *robot);
+glong g_robot_get_energy (GRobot *robot);
+glong g_robot_get_score (GRobot *robot);
+
+G_END_DECLS
+
+#endif
diff --git a/include/main.h b/include/main.h
new file mode 100644
index 0000000..d09ac65
--- /dev/null
+++ b/include/main.h
@@ -0,0 +1,10 @@
+/* Functions */
+
+#include <glib.h>
+#include <grobot.h>
+
+void main_prog (void *closure, gint argc, gchar *argv[]);
+void death (GRobot *robot);
+void exit_nicely (void);
+void usage (const gchar *argv0);
+gint is_file (const gchar *filename);
diff --git a/include/map.h b/include/map.h
new file mode 100644
index 0000000..8818030
--- /dev/null
+++ b/include/map.h
@@ -0,0 +1,57 @@
+#ifndef _MAP_H
+#define _MAP_H
+/* MACROS */
+
+#include <glib-object.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+extern GType _map_type;
+
+typedef struct
+{
+ gint num_rows;
+ gint num_cols;
+} MapSize;
+
+typedef struct _Map Map;
+
+struct _Map {
+ GObject object;
+
+ /* The actual Map */
+ gint **_map;
+ MapSize size;
+
+ gint errors;
+};
+
+typedef struct _MapClass MapClass;
+
+struct _MapClass {
+ GObjectClass parent_class;
+};
+
+#define G_TYPE_MAP (_map_type)
+#define G_IS_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_MAP))
+#define G_IS_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_MAP))
+#define MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_MAP, MapClass))
+#define MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_MAP, Map))
+#define MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_MAP, MapClass))
+
+/* some convenient macros */
+#define MAP_GET_OBJECT(map, x, y) ((map)->_map[(y)][(x)])
+#define MAP_SET_OBJECT(map, x, y, thing) ((map)->_map[(y)][(x)] = thing)
+
+/* normal GObject stuff */
+GType map_get_type (void);
+
+/* Our object functions */
+Map* map_new_from_file (const gchar *map,
+ gint num_rows,
+ gint num_cols);
+
+G_END_DECLS
+
+#endif
diff --git a/include/sign.h b/include/sign.h
new file mode 100644
index 0000000..f98c6c1
--- /dev/null
+++ b/include/sign.h
@@ -0,0 +1,3 @@
+#include <glib.h>
+
+gint sign (gint n);
diff --git a/include/userinterface.h b/include/userinterface.h
new file mode 100644
index 0000000..ba5ade9
--- /dev/null
+++ b/include/userinterface.h
@@ -0,0 +1,211 @@
+/* $Id: userinterface.h,v 1.7 2005/09/06 19:55:40 zeenix Exp $ */
+
+/* GNU Robots game engine. This is the header file for user_interface module */
+
+/* Copyright (C) 1998 Jim Hall, jhall1@isd.net */
+
+/*
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef __USER_INTERFACE_H__
+#define __USER_INTERFACE_H__
+
+#include <glib-object.h>
+#include "map.h"
+
+G_BEGIN_DECLS
+
+extern GType _user_interface_type;
+
+typedef struct _UserInterface UserInterface;
+typedef struct _UserInterfaceClass UserInterfaceClass;
+
+struct _UserInterfaceClass {
+ GTypeInterface parent;
+
+ void (* user_interface_add_thing) (UserInterface *ui,
+ gint x,
+ gint y,
+ gint thing);
+
+ void (* user_interface_draw) (UserInterface *ui);
+
+ void (* user_interface_update_status) (UserInterface *ui,
+ const gchar *s,
+ glong energy,
+ glong score,
+ glong shields);
+
+ void (* user_interface_move_robot) (UserInterface *ui,
+ gint from_x,
+ gint from_y,
+ gint to_x,
+ gint to_y,
+ gint cdir,
+ glong energy,
+ glong score,
+ glong shields);
+
+ void (* user_interface_robot_smell) (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ glong energy,
+ glong score,
+ glong shields);
+
+ void (* user_interface_robot_zap) (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+ void (* user_interface_robot_feel) (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+ void (* user_interface_robot_grab) (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+ void (* user_interface_robot_look) (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+/* routines to get/display data from/to user */
+ void (* user_interface_get_string) (UserInterface *ui,
+ gchar *prompt,
+ gchar *buff,
+ gint len);
+};
+
+#define G_TYPE_USER_INTERFACE (_user_interface_type)
+#define G_IS_USER_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_USER_INTERFACE))
+#define G_IS_USER_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_USER_INTERFACE))
+#define USER_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_USER_INTERFACE, UserInterfaceClass))
+#define USER_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_USER_INTERFACE, UserInterface))
+#define USER_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_USER_INTERFACE, UserInterfaceClass))
+
+/* normal GObject stuff */
+GType user_interface_get_type (void);
+
+/* functions we want implemented by the implementers of our interface */
+void user_interface_add_thing (UserInterface *ui,
+ gint x,
+ gint y,
+ gint thing);
+
+void user_interface_draw (UserInterface *ui);
+
+void user_interface_update_status (UserInterface *ui,
+ const gchar *s,
+ glong energy,
+ glong score,
+ glong shields);
+
+void user_interface_move_robot (UserInterface *ui,
+ gint from_x,
+ gint from_y,
+ gint to_x,
+ gint to_y,
+ gint cdir,
+ glong energy,
+ glong score,
+ glong shields);
+
+void user_interface_robot_smell (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ glong energy,
+ glong score,
+ glong shields);
+
+void user_interface_robot_zap (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+void user_interface_robot_feel (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+void user_interface_robot_grab (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+void user_interface_robot_look (UserInterface *ui,
+ gint x,
+ gint y,
+ gint cdir,
+ gint x_to,
+ gint y_to,
+ glong energy,
+ glong score,
+ glong shields);
+
+/* routines to get/display data from/to user */
+void user_interface_get_string (UserInterface *ui,
+ gchar *prompt,
+ gchar *buff,
+ gint len);
+
+typedef UserInterface * (* UserInterfaceInitFunc) (Map *map,
+ GType parent_type);
+#define USER_INTERFACE_INIT_FUNCTION "user_interface_new"
+
+G_END_DECLS
+
+#endif /* __USER_INTERFACE_H__*/