332 lines
12 KiB
Groff
332 lines
12 KiB
Groff
|
|
|||
|
ROBOTWAR
|
|||
|
|
|||
|
Welcome to the battlefield of the future! It is the year 2002. Wars
|
|||
|
still rage, but finally, they have been officially declared hazardous to
|
|||
|
human health. Now, the only warriors are robots - built in secret and
|
|||
|
programmed to fight each other to the death!
|
|||
|
|
|||
|
Your country has just developed the most efficient battle robot to date.
|
|||
|
It should be unbeatable - but part of its micro-computer "brain" is
|
|||
|
still blank. Only when a strategy is programmed into its memory will the
|
|||
|
robot be able to fight.
|
|||
|
|
|||
|
The task set before you is to program a robot that no other robot can
|
|||
|
destroy.
|
|||
|
|
|||
|
RobotWar is a fascinating and highly competitive game where robots
|
|||
|
battle each other to the death! RobotWar is not a game using manual
|
|||
|
dexterity, instead the robots are controlled by pre-programmed
|
|||
|
strategies and highly spectator interest.
|
|||
|
|
|||
|
As well as providing hours of entertainment, RobotWar is designed to
|
|||
|
teach and sharpen the skills of creative computer programming. Whether
|
|||
|
you are a beginner or an accomplished programmer, RobotWar will prove to
|
|||
|
be fun and challenging.
|
|||
|
|
|||
|
Robot war players design and write robot programs. The program is
|
|||
|
written with the help of a text-editor, and then translated by an
|
|||
|
assembler into robot-understandable instructions. The program can then
|
|||
|
be tested on a simulated robot to make sure it is working properly. Once
|
|||
|
the player is assured that the program is running as planned, it is
|
|||
|
installed in a battle robot and sent out to do battle with the other
|
|||
|
robots.
|
|||
|
|
|||
|
From the main menu, several options are selectable. These options are
|
|||
|
described below:
|
|||
|
|
|||
|
Option 1
|
|||
|
This will access the Battle branch where the player can setup and
|
|||
|
execute one robot battle. See "robots and robot battles".
|
|||
|
|
|||
|
Option 2
|
|||
|
This will access the robotwar assembler and testing branch where the
|
|||
|
programs are translated and checked for errors, or tested on a simulated
|
|||
|
robot. See "the assembler" and "the test bench".
|
|||
|
|
|||
|
Option 3
|
|||
|
This will access the text-editor where an existing program can be edited
|
|||
|
or a new program can be written. See "writing and editing source code".
|
|||
|
|
|||
|
Option 4
|
|||
|
This is a simple control that turns the battle sounds on or off.
|
|||
|
Pressing the 4 key will change the position of the sound switch.
|
|||
|
|
|||
|
Option 5
|
|||
|
This will access the disk storage branch where a disk can be initialized
|
|||
|
for storing robot code. See "storing robots on auxiliary disks".
|
|||
|
|
|||
|
Option 6
|
|||
|
This will cause the computer to exit from the robotwar program to
|
|||
|
applesoft basic.
|
|||
|
|
|||
|
Option 7
|
|||
|
This will access the match scheduling branch where the player can
|
|||
|
schedule and execute a series of battles. See "robots and robot
|
|||
|
battles".
|
|||
|
|
|||
|
Option 8
|
|||
|
This will allow the player to run a previously scheduled or interrupted
|
|||
|
match (a series of battles). If you resume a previously interrupted
|
|||
|
match it will begin with the battle after the one which was
|
|||
|
interrupted.
|
|||
|
|
|||
|
Note: If no option is selected from the main menu, the program will
|
|||
|
automatically select option 8. Robots and Robot Battles Locomotion
|
|||
|
|
|||
|
Each robot is moved by tracks mounted on a 1.5 meter square chassis. The
|
|||
|
two independent motors, driving the tracks, enable the robot to move
|
|||
|
vertically (north/south) and horizontally (east/west).
|
|||
|
|
|||
|
Power Supply
|
|||
|
The power supply will take the severest damage from the enemy shells. It
|
|||
|
is built into the central body of the robot, along with damage sensors.
|
|||
|
These sensors monitor the damage to the power supply and when 100%
|
|||
|
damage is attained, the robot will explode.
|
|||
|
|
|||
|
Radar
|
|||
|
On top of the robot is a radar unit that emits a beam in any desired
|
|||
|
directions. This beam reflects from walls and other robots and returns
|
|||
|
to the robot. The beam is accurately timed, enabling the robot to find
|
|||
|
it's position and to spot enemy robots.
|
|||
|
|
|||
|
Guns and Ammunition
|
|||
|
Your robot is equipped with one gun that swivels through 360 degrees and
|
|||
|
is automatically loaded. It uses time-fused shells that can be set to
|
|||
|
explode at any specified distance. The gun also has a cooling period
|
|||
|
between each shot to keep it from overheating.
|
|||
|
|
|||
|
The Brain
|
|||
|
Inside the robot is a micro-computer "brain" that executes the
|
|||
|
instructions exactly as they have been programmed. The brain has several
|
|||
|
parts: an accumulator where a robot performs all arithmetic operations,
|
|||
|
a program storage area where the instructions are stored in memory, and
|
|||
|
registers where numbers are stored. the brain links to input sensors
|
|||
|
monitoring damage and position as well as to the drive motors, radar,
|
|||
|
and gun. While the robot is on the battlefield the brain is in complete
|
|||
|
control!
|
|||
|
|
|||
|
The battlefield
|
|||
|
Robot battles take place on a square battlefield inside four strong
|
|||
|
walls. Each wall is 260 meters long and strong enough that a robot
|
|||
|
cannot crash or shoot through it. As many as five robots can fight at
|
|||
|
once, but only one will emerge as the winner.
|
|||
|
|
|||
|
There is an observations station, directly above the battlefield,
|
|||
|
enclosed in blast-proof glass to protect you and the other observers.
|
|||
|
|
|||
|
Damage
|
|||
|
Robots are eliminated from battle by incurring over 100% damage. When a
|
|||
|
shell hits a robot or explodes nearby, the robot is damaged. The extent
|
|||
|
of that damage depends on the proximity of the shell to the robot. A
|
|||
|
shell exploding directly on top of a robot can do 30% damage.
|
|||
|
|
|||
|
A robot can also be damaged through collisions with walls or other
|
|||
|
robots. The extend of damage would depend on the angle of collision. A
|
|||
|
head-on collision between two robots can do 25% damage to both robots.
|
|||
|
|
|||
|
The Scoring System
|
|||
|
Each robot has a score associated with it. As each battle is fought the
|
|||
|
robots earn points which are added to it's cumulative score. Every time
|
|||
|
a robot's program is changed, it's score is reset to 0.
|
|||
|
|
|||
|
Robots earn points in the following manner. during a battle, every time
|
|||
|
a robot is destroyed, 1 point is earned by all of the survivors. Thus in
|
|||
|
a five-robot battle, the first to be destroyed receives 0 points. For
|
|||
|
outlasting that first robot, all other robots on the battlefield earn 1
|
|||
|
point. For outlasting 4 other robots, the winner of a 5-robot battle
|
|||
|
earns 4 points!
|
|||
|
|
|||
|
Controlling Robots
|
|||
|
A robot computer contains 34 registers. The 34 registers are divided
|
|||
|
into three categories:
|
|||
|
|
|||
|
1. Memory registers which are used to contain numbers for latter
|
|||
|
recall.
|
|||
|
|
|||
|
2. Input/Output (I/O) registers which are used to monitor and control
|
|||
|
specific robot functions.
|
|||
|
|
|||
|
3. The Index/Data pair of registers which are used to access the other
|
|||
|
registers by their numbers instead of their names.
|
|||
|
|
|||
|
1. Memory Registers
|
|||
|
There are 24 memory registers used to store numbers. The memory
|
|||
|
registers are named A through W and Z. (X and Y are not included - they
|
|||
|
are input registers as described below).
|
|||
|
|
|||
|
2. Input/Output Registers
|
|||
|
There are nine I/O registers that allow the computer to control the
|
|||
|
robot's actions. Each controls or monitors a specific robot function as
|
|||
|
described below:
|
|||
|
|
|||
|
a) The X register:
|
|||
|
The X register is used to monitor the horizontal position of the robot.
|
|||
|
It always contains the current horizontal position of the robot on the
|
|||
|
battlefield, as a number from 0 to 256. o is at the extreme left of the
|
|||
|
battlefield and 256 is at the extreme right.
|
|||
|
|
|||
|
b) The Y register:
|
|||
|
The y register is used to monitor the vertical position of the robot. 0
|
|||
|
is at the top of the battlefield and 256 is at the bottom.
|
|||
|
|
|||
|
c) The AIM Register:
|
|||
|
The AIM register is used to monitor and control the angle at which the
|
|||
|
gun is aimed. when a number from 0 to 359 is stored in the Aim register,
|
|||
|
the robot's gun will turn to that angle. 0 aims the gun due north, 90
|
|||
|
aims it due east, etc. The AIM register always contains the current
|
|||
|
angular position of the gun.
|
|||
|
|
|||
|
d) The RADAR register:
|
|||
|
The RADAR register is used to control the radar unit on top of the robot
|
|||
|
and monitor the results of the radar beam. Storing a number from 0 to
|
|||
|
359 in the RADAR register, sends a beam out in that direction.
|
|||
|
|
|||
|
e) The SHOT register:
|
|||
|
The SHOT register is used to fire the robot's gun and monitor the state
|
|||
|
of readiness of the gun. Storing a new number in the SHOT register: Sets
|
|||
|
the timer on the shell so that it will travel that number of meters
|
|||
|
before exploding, and then fires it. After a shot is fired the SHOT
|
|||
|
register will contain the state of the gun's cooling process. When the
|
|||
|
SHOT register contains a zero the gun is ready to be fired again.
|
|||
|
|
|||
|
f) The DAMAGE register:
|
|||
|
The DAMAGE register is used to monitor the amount of damage detected by
|
|||
|
the damage sensors. the DAMAGE register starts at 100 at the beginning
|
|||
|
of each battle and decreases towards 0 as damage is incurred. When the
|
|||
|
register reaches 0, the robot is completely destroyed and will disappear
|
|||
|
from the battlefield. The DAMAGE register always contains the current
|
|||
|
extend of damage.
|
|||
|
|
|||
|
g) the SPEEDX register:
|
|||
|
This register is used to control and monitor the horizontal speed of the
|
|||
|
robot. The number stored in the SPEEDX register can range from -255 to
|
|||
|
255 and controls the direction and speed of the robot. A negative number
|
|||
|
moves the robot to the left at that many decimeters/second, and a
|
|||
|
positive number moves the robot to the right at that many
|
|||
|
decimeters/second. If a zero is stored in this register the robot will
|
|||
|
stop moving in the horizontal direction. The SPEEDX register always
|
|||
|
contains the horizontal speed of the robot.
|
|||
|
|
|||
|
h) The SPEEDY register:
|
|||
|
Acts the same as the SPEEDX register, only in the vertical direction. A
|
|||
|
positive number is in a downward direction and a negative number is in
|
|||
|
an upward direction.
|
|||
|
|
|||
|
i) The Random register:
|
|||
|
This register is used to control the random number generator. Storing a
|
|||
|
number in the RANDOM register sets the limit for the generator. Then,
|
|||
|
each time the RANDOM register is accessed, it will contain a different
|
|||
|
integer (whole number) between 0 and th random number limit which was
|
|||
|
previously set.
|
|||
|
|
|||
|
|
|||
|
[----------------------------------------------------------]
|
|||
|
| (0,0) (256,0) |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| o |
|
|||
|
| o 0 o |
|
|||
|
| 315 | 45 |
|
|||
|
| o \ |/ o |
|
|||
|
| 270------.------90 |
|
|||
|
| o/ |\ o |
|
|||
|
| 225 | 135 |
|
|||
|
| | o |
|
|||
|
| 180 |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| (0,256) (256,256) |
|
|||
|
[----------------------------------------------------------]
|
|||
|
|
|||
|
|
|||
|
3. The index/Data Registers
|
|||
|
|
|||
|
The robot registers are usually referenced by their names. The
|
|||
|
Index/Data pair allows registers to be accessed by number instead of
|
|||
|
name.
|
|||
|
|
|||
|
|
|||
|
Storing a number from 0 to 34 in the INDEX register causes the
|
|||
|
corresponding register to be used whenever the DATA register is
|
|||
|
referenced.
|
|||
|
|
|||
|
For example, assume the INDEX register contains 27. When the DATA
|
|||
|
register is referenced in an instruction, register #27 (AIM) will be
|
|||
|
substituted for DATA.
|
|||
|
|
|||
|
Number Name Type
|
|||
|
1-23 A-W Storage
|
|||
|
24 X Current X position
|
|||
|
25 Y Current Y position
|
|||
|
26 Z Storage
|
|||
|
27 AIM Aims gun
|
|||
|
28 SHOT fires the gun
|
|||
|
29 RADAR pulses the radar
|
|||
|
30 DAMAGE monitors damage
|
|||
|
31 SPEEDX control horizontal speed
|
|||
|
32 SPEEDY control vertical speed
|
|||
|
33 RANDOM random number generator
|
|||
|
34 INDEX Index other registers
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|