DEFUSE!
F. James McPherson has assigned you to a very dangerous task...
In the game of DEFUSE you are in a terrorist house in which a bomb has been hidden inside a bag. Unfortunately, there are quite a few bags left inside the house - and your job is to locate the one with the bomb inside.
To check for a bomb all you have to do is run over the bag with your metal-detector and it will tell you if the bomb is contained within the bag.
However, the terrorists have positioned a number of booby-traps in the house.
Luckily for you these have been located and marked with flags, but if you hit it will explode.
Added to your problems is the fact that you only have twenty seconds in which to find the bomb before it explodes.
An explanation of how to play the game and the controls used are also included within the program. The controls are:
Z - Left, X - Right, * - Up, ? - Down
Procedures | |
Setup | Chooses the colours and prints the writing. Uses the data from lines 1370-1390 and PROCroom to draw the house. Prints the flags and bags randomly. Chooses the random position of the bomb. |
move | The main procedure. Moves the character around the screen according to the keyboard entries, and checks if you have hit a flag or bag. |
room() | Draws a room with top left and bottom right coordinates at XR1%, YR1%, XR2% and YR2% |
end | Called once the game is over. Prints the ending lines and asks if you want another game. |
doneit | Called once the bomb is found, pauses and makes sound effects, then moves on to the next screen. |
intro | Uses DATA from lines 2190-2270 and prints it in the centre of a specified line in a random colour. |
d | Asks you to "Press any key" and clears the screen. |
Variables | |
H% | Hiscores |
S% | Score |
G% | Number of bags |
X% & Y% | Coordinates of player |
J% & K% | Text coordinates of player |
D% & E% | Coordinates of player before it moved |
RX% & RY% | Randomly-chosen coordinates for the bag and the flags |
XB% & YB% | Coordinates of the bag with the bomb in it |
L% | Colour of the point the player has just moved to |
KARATE WARRIOR
Win your black belt in this gruelling test of Karate skill by Matthew Holroyd
As a pupil at the temple of Tanhii you have been trained in Taijutsu, the Ninja's art of unarmed combat. Now comes your final test. Before leaving the temple to become a Warrior of the Night you must fight against another opponent who wishes to qualify like you.
Both of you are fantastic fighters, with hands and feet of steel. Your opponent eyes you, then circle to the left. You step to the right, following the curve of the arena.
He stops and leaps forward, attempting a Tettsui-uchi, but you are quick and adopting the Kokutsu Dachi stance you deliver a block with your right forearm.
Then you whirl round and float into the air. Your feet clasp around his face and you spin, sending him flying with a Teeth of Tiger throw. He lies dazed on the floor. You bow and then leave the arena. You have got your black belt.
The aim of the game is to become a black belt before your opponent does. This is done by winning each fall. Both of you start off with white belts and must each win five falls to reach blacks.
Each player has four moves. These are:
Yoko Geri Chudan - Side kick to the ribs or chest.
Kansetsu-Geri - Knife kick to the opponent's ankles.
Kakato-Geri - Jumping heel hick to the jaw.
Somersault - Back flip used in retreat.
When striking with a Koko Geri Chudan, the player will move forward. This kick is used to advance towards your opponent and is also the most common kick used.
The Kansetsu-Geri is a very useful and effective kick as it is used to topple an unaware opponent. When kicks are being delivered, the mvoe can be used to duck or dodge a strike and also to swipe away the foundation leg.
The Kakato-Geri is a spectacular flying kick to the jaw. This kick is very advanced and also safe as you cannot be struck when you are using this move. If can be blocked using a Yoko Geri Chudan or can be dodged using a Kansetsu-Geri.
When you feel uneasy or open to attack a somersault is a very useful move. It is the safest move as you cannot be touched while you are flying through the air, but it allows your opponent to advance. You cannot always somersault - only when you are far enough away from the edge of the arena.
The game is quite complicated in the way it prints out the men's different positions. Because the characters are so large and there are so many positions we define the chracters for each new position just before we print them.
This is because each man is made up of twelve characters and as there are twelve positions of each man we would soon run out of spare character spaces if we tried to define all these at the beginning of the program.
Only the characters for the positions of the man facing right are defined. Then, in the program, we use a small machine code routine which reverses the characters to produce a man facing left. Using this technique we save half the work when defining, and half the work when typing in.
Game Controls:
Player 1 | Player 2 | |
CTRL | Somersault | RETURN |
A | High kick | ] |
S | Side kick | : |
X | Sweeping kick | / |
Q/W - Sound Off/On, F/R - Freeze/Restart, I - Instructions
Variables | |
belt1% | Player 1's belt |
belt2% | Player 2's belt |
X% | Player 1's x coordinate |
N% | Player 2's x coordinate |
B% | Set to 1 if striking, 0 if not |
C% | Set to 1 if striking, 0 if not |
E% | The code for player 1's move |
R% | The code for player 2's move |
I% | Controls the animation of player 1's moves |
J% | Controls the animation of player 2's moves |
man$ | Player 1's man |
man2$ | Player 2's man |
M%,O% | Used in PROCcheck to compare to I% and J% |
Procedures |
|
caller | Calls the machine code routine which reverses the characters |
delay() | Makes a delay |
kick1,2 | Controls the normal kicks of the two players |
hikick1,2 | Controls the high kicks of the two players |
sweep1,2 | Controls the sweeping moves of the two players |
som1,2 | Takes care of the somersault |
init | Defines the variables |
stance kickchars1,2 hikchars1,2 sweepchars1,2 somchars1,2 |
Define the characters for the moves |
reverse | Machine code routine used to reverse characters |
screen | Draws the screen |
check | Checks when the players are striking and acts accordingly |
deadchars1,2 | Characters for the dying men |
man1dead | Displays player 1 dying |
man2dead | Displays player 2 dying |
nextbelt | Works out the next belt for each player |
start | Controls the starting of each fall |
win | Prints the winning screen and draws the winner |
bow | Characters for the bowing men |
inst | Instructions |
freeze | Freeze facility |
PAINT ROLLER
Get stuck in and paint the town blue in this game of fun from Carl Dunkley
Fancy a spot of decorating? Then PAINT ROLLER is just the game for you. Splash it all over and never mind the mess!
The object of the game is to steer a speeding roller round the screen, painting it a nice deep blue. Sounds easy doesn't it? Don't be fooled - it requires skill and concentration.
The screen is littered with paintbots and rocks. Run over the paintpots but be careful not to hit the rocks - the result is disastrous.
Re-painting an area that's already been done is a waste of precious paint, so plan your route ahead carefully.
If you're having difficulty and the game is too fast, insert a delay loop of the form:
FORdelay=1TO50:NEXT
after the REPEAT in line 80.
Procedures | |
play | Runs frame |
find | Finds an empty screen location |
init | Assembles machine code and defines graphics characters |
screen | Sets up screen |
dead | Loses a life |
over | Game over |
bonus | Obtains a bonus for completing a screen |
reset | Resets variables and prints instructions |
Main Variables |
|
H% | High score |
S% | Current score |
F% | Frame counter |
L% | Number of lives left |
X% | X coordinate of roller |
Y% | Y coordinate of roller |
AM | Area to be painted |
TRAIN
We seem to be in a mechanical frame of mind nowadays.
The June issue had Dave Robinson's Engine, showing us the ins and outs of internal combustion.
Now we have Paul Heath's TRAIN, a delightful little piece of animated action.
Program Explanation | |
50-100 | Set up the screen background and draw the rail |
110-250 | Make use of PROCcircle to draw the engine's wheels |
260-340 | Use PROCSPOKE and PROCSPOKE2 to draw the spokes |
350-470 | Draw the sleepers |
480-660 | Produce the train's body |
670-700 | Smoke clouds |
710-970 | Produce the animation techniques by changing the colours on the screen |
980-1200 | Define the procedures |
Procedures | |
PROCcircle(X,Y,R) | Draws a solid circle with centre coordinates X,Y with radius R |
PROCSPOKE & PROCSPOKE2 | Draw the spokes. Two procedures are used to offset the spokes so that when the colour changes take place the wheels appear to revolve. |
PROCWAIT | Waits and makes the noises |