summaryrefslogtreecommitdiff
path: root/README
blob: 5304fbbc1c31978e36f6190b89b7f10cb3dfd2cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

Introduction
============

GNU Robots is a game/diversion where you construct a program for a
little robot, then set him loose and watch him explore a world on his
own.  The robot program is written in Scheme, and is implemented using
GNU Guile.

Installing GNU Robots
======================

(0) To build GNU Robots, you *first* need to have already compiled and
    installed the GNU Guile library.  GNU Robots was built using Guile
    1.3.

    Guile 1.2 will also work, but you will need to provide your own
    scm_random() function.  See src/random.c

(1) Type:

    ./configure

    To specify an unusual location for GNU Guile, you can use the
    `--with-guile=' option, like this:

    ./configure --with-guile=/home/jhall

    To specify an unusual location for curses, you can use the
    `--with-curses=' option, like this:

    ./configure --with-curses=/hub/local

(2) Look at the generated `Makefile', and check that everything is
    okay.  Then type:

    make

Notes
=====

* There is really one key missing piece in GNU Robots: I had
* originally envisioned a "visual" programming interface for GNU
* Robots, one where you could create a robot program by dropping into
* place icons that represent the robot's actions.  There would be one
* icon to tell the robot to move forward, another to have him turn to
* the left or right, and another to have him pick up things or fire
* his little gun.
*
* This programming interface would really just act as a kind of code
* generator; it would write a Scheme program that you could then load
* into GNU Robots.  Writing this in GTK+ would seem like a good idea.
*
* If anyone would like to help write this programming interface for
* GNU Robots, please contact me!  You may reach me at <jhall1@isd.net>


There are three ways to run GNU Robots:

1. X Windows ("xrobots")
2. text mode, using curses ("robots")
3. text mode, log file output ("robots_logfile")

I use the robots_logfile when I am hosting a GNU Robots competition,
because it is not really interesting for me to see how the many robots
are individually interacting with their environments. I am only
interested in the outcome.

I use the xrobots program when I am running my own GNU Robot game,
because there I *am* interested in what my robot is doing.

--

The "robots" program is a curses-based version of the game, using an
ASCII approximation of the game elements.  Your robot will appear as a
"v" when it points South, "^" when it points North, and "<" and ">"
for West and East.  Empty spaces are shown as " ", walls as "#",
baddies as "@", and food and prizes as "+" and "$".

You'll note that this is the same notation used in the GNU Robots map
files.  The initial location of the robot is not shown in the map
file, but is always at 1,1 facing East (the upper-left corner is
always 0,0).

The sample map that is provided as "maps/small.map" is just a single
room, with prizes all along the four walls.  The sample robot program
"scheme/simple.scm" knows how to pick up all these prizes and then
quit.  Other map files can be found in the maps/ directory, and other
robot programs are in the scheme/ directory.

The usage for robots, xrobots, robots_logfile is as follows:

  robots [OPTION]... [FILE]

Options are:

  -f, --map-file=FILE    Load map file
  -s, --shields=N        Set initial shields to N
  -e, --energy=N         Set initial energy to N
  -V, --version          Output version information and exit
  -h, --help             Display this help and exit

Even though it's not shown, the `-f' option to load a map file is
required by GNU Robots.  Otherwise, the game will not be able to open
a map for your robot to explore!