AFRICAN SEEDS
BLOCK BUSTER
CHART TOPPER
DEMOLITION SQUAD
DICEY
INFERNO


AFRICAN SEEDS
-------------
by M.J.Edwards
from ZX Computing August/September 1985

Down in darkest Gwent something stirs. It's M.J.Edwards playing this brain
testing game!!!


AFRICAN SEEDS is based on the mancala games popular in Africa. The nature of
the games varies widely from place to place, but they are usually based on
capturing counters from rows of cells. The counters may be seeds, beans,
stones or twigs. The cells may be holes in the ground, cups, or hollows in
beautifully carved wooden game-boards. There may be two, three or four
players and either two or four rows of cells, and the way they are divided
between the players, and the conditions under which capture can occur, vary
according to whether the game is Awari, Ayo, Ba-Awa, Lontu-holo, Wari, Whyo,
or one of the four-rank mancala games. Wari and Awari are probably the most
profound in strategy, and are considered to be on a level with chess, but
other games are faster, with more dramatic changes in fortune.

The games are well suited for computer play. The element of calculation is
important, and computers can be programmed without too much difficulty to
beat humans. From the player's point of view, it is much easier to type in a
letter on a computer keyboard, than to pick up maybe thirteen counters from
one cup and put them individually into another row of cups.

This program can be beaten  though at level 0 you'll have to work rather
hard to do so. Sometimes you will see how to win easily, but a sequence of
lifts can continue for, say, twenty-five moves, and the computer is rather
better at keeping track of them than I am! Don't lose heart, though, the
computer's depth of search is deliberately limited  and even at its highest
level, it's still capable of blunders just as big as yours.

At the start of the game, the computer tosses for first move. If you win, you
will be invited to enter a letter to denote the cup you want to lift. The
computer will take the seeds out, and sow them in successive cups in an
anti-clockwise direction. If the final seed of the lift falls into an
occupied cell, all the seeds in that cell are lifted and the sowing continues
as before. Otherwise, if the final seed lands in an empty hole  and the
sowing must continue until this is so  you capture the seeds in the hole
immediately opposite, if it is in your opponent's row, or none if it is in
your own row.

The only problem with making captures is that if you leave the computer with
no seeds to play, it will claim the win by forfeit. With that proviso, once
you have captured twenty-five or more seeds, the victory is yours.

The computer's speed of response depends upon the level chosen, but is
reasonably fast anyway. Just in case you get bored, you are treated to a
display of flashing lights and bleeps (a feature lacking in the African
originals?). They are intended for more than diversion, though  they show
which moves are being made or considered. A steady blue light shows the cup
where a sequence of lifts ends. A flashing blue light shows where a capture
occurs.

The structure of the program is simple, and the table should make it easy to
modify. For example, if you leave out the instructions and some "special
effects", it ought to be possible to squeeze it all into a 16 K Spectrum. Or,
you might prefer to display integers, as in Lines 2325-2330, instead of the
pips in Lines 2301-2324. If you want to make the computer stronger, then you
could replace the part of Line 1150 after the INPUT with the simpler "GO TO
1300",and replace the "+20" in Line 1070 with "+50". Save the program with
(using whatever title you like) SAVE "AS" LINE 1000.

LINES  FUNCTION                 SUBROUTINES CALLED
1000   Initialise               Display
                                User-defined graphics
                                Instructions
                                Codes for print positions held in strings
1200   Computer's move          End check
1300   Analysis and evaluation  Move check and capture check
                                Display board
                                End check
1500   Player's move            Make move
                                Tidy display
                                Display board
       GO TO 1200 ELSE
       END

Subroutines:
100     Lift and sow = Make or Check a move
200     Check for end of move and capture
300     Display board
400     Tidy display
500/600 Result = END
700     End of game check
2000    Display
2100    User-defined graphics
2160    Codes for letter positions
3000    Codes for seed positions
2400    Instructions

Variables used:
zx      set to 1 for computer's move
d       depth of search
l       level chosen
c       stalemate counter
sc      set to 1 to make a move, or set to 0 to evaluate the position
win     number of points scored on a move
end     set to one if a sequence of lifts reaches an end
op      the cell opposite the end of a sequence of lifts

Arrays used:
b(12)   board positions
h(12)   model board fo analysis
m(12)   move evaluation
s(2)    the scores: s(1) is the computer's, and s(2) the player's
a$(12)  column positions for letter display
x$(12)  row positions for seed display
y$(12)  column positions for seed display

Data and user-defined graphics:

Lines 2300-2324 constitute a "look-up" table which works much faster than a
user-defined function displays integers.
Graphics A to H represent the numbers 1 to 8.
Graphics I to L represent the corners of the cups in the order top right, top
left, bottom left, bottom right.


**********************************************************************
BLOCK BUSTER
ZX Computing Aug/Sep.1985

OK Buster, move them blocks!
Adam Bull wrote this challenging game based on the arcade hit of Hessle.

This game is a version of a popular arcade game where you
must defuse a number of time bombs whilst collecting flags for
bonus points, and trying not to get blown up. Your play area
consists of blocks and unexploded bombs (which look like
skulls and cross-bones). You move your man around using the
cursor keys, and, as he passes over a block, the block disappears.
You will die if you move onto a place where there is no
longer a block, and also if you move onto a skull and cross-
bones. After a random interval, one of the bombs will be
activated and it will start to flash. It must then be defused, simply by
moving onto it, before the time runs out. The time left until the
bomb detonates is shown on the flashing bomb itself. Don't
forget you may only move onto a bomb when it is activated!

Extra points can be gained by moving onto the yellow flag. After a
little while, you will find it getting harder and harder to reach a
bomb because of the lack of blocks. To help you get past this
difficulty, the ROW of blocks which you are on can be shifted
to the left or right using "1" and "2" respectively. It does not
matter if an empty space is shifted underneath you, but an
unactivated bomb will kill you as usual. After level 2, there will be
a row of pink blocks which cannot be shifted. The number of
bombs increases on each level, and the time in which you must
detonate them decreases. A concise set of instructions is
given in the game. You start with three lives. A high score is
kept during the game. The screen is wrap-around, so if you
go off the side or any edge, you will appear on the opposite side.

When typing in the game, capital letters which do not
obviously form words are probably user defined graphic characters
and should be typed in as such. They appear in lines:

60, 110, 160, 200, 1010, 1040, 4030, 4040, 4530, 6050

Important sections of the game are marked with REM statements.

Variables
The main variables used are:
hi	high score
sc	score during game
l	current level
l$	lives left string
a,b	coordinates of your man (aa,bb saves the last coordinates of a,b)
f1,f2	coordinates of flag
b1,b2	coordinates of currently activated bomb
m$()	contains the play area - blocks and bombs
m()	contains the row numbers of the bombs
bo	bomb number on each level
t	time left until current bomb detonates
d	holds the row number of immovable pink blocks
x$	general string for INKEY$, etc.
x,y,z	general purpose variables


**********************************************************************
CHART TOPPER
------------
Mike Hyams returns with this record breaking strategy game
- ZX81 and Spectrum conversion tips are included.


Most people imagine themselves as pop stars at some time or other, but the
more mercenary of us imagine ourselves as pop star managers! I don't know if
Mike was ever in the business but it seems very realistic when compared to my
own experiences.

Playing The Game

Be careful not to spend more than you have as this incurs instant dismissal!

When booking you may book for any week of the year provided you have the cash
in hand at that time. However, the one exception is the pub or club hall
booking which is paid for on the actual night. Once the band has given the
minimum amount of performances you can then release a record, single or
album. However, if you are not under contract to a record label then you will
get no revenue from them.

During the group's initial build-up of its following there may be offers from
unscrupulous companies who will try to tie you up for two or three years at a
low percentage. This could cause the loss of a lot of money if the band's
career suddenly takes off!

It is very unlikely that the first record releases will get into the charts,
in fact they will probably flop. On the other hand, should you achieve
mega-stardom then a Number One is on the cards.

Conversion Hints

ZX81/Spectrum:
Replace all CHR$ (212) with """" for the Spectrum and "" for the ZX81.
Replace all RND(no) with INT(RND*no)+1).
Replace TL$ in line 1280,1300 with B$(2 T0 ).
Change line 720 to SAVE "chart" and add 730 GOTO 95.

Spectrum only:
Add 30000 to all numbers 31000+ in the following lines:
655, 679, 1240, 1645, 1840, 1920, 5121, 5122, 5360, 5435, 5501, 5511.
Replace all CHR$(128) with the inverse space on Graphics key 8.
Change the number 3584 in 1500 to 15360.
Replace the number 14 in lines 1273, 1276, 1293 and 1296 with 58.
Change line 720 to SAVE "chart" LINE 95.

There are almost certainly one or two other changes to be made which have
slipped by our eager eyes. I'm sure you'll let us know so we can pass them
on to other readers.

IMPORTANT - When the program is saved from the option offered on Mondays, then on
subsequent reloadings start the program by GOTO 95; this will restart the program
should you accidentally break out during play without losing your position.

Line Breakdown

110-231    Print the cash amount.
235-950    Monday options.
1000-1991  Tuesday chart routines.
1265-1590  Print chart position in large lettering.
1810-1950  Calculate chart position for the next week.
2000-2730  Wednesday, booking routines.
3000-3560  Thursday, current week bookings carried out, results.
5000-5580  End of week report.
6010-6200  Subroutine to print current booking schedule.
9000-9400  Initialisation of program.
9500-9570  Prints group name in inverse graphics.
9450-9459  Subtraction routine.
9640-9469  Addition routine.


**********************************************************************
DEMOLITION SQUAD (16K ZX-81)
by Cyrus D. Feyz
from ZX Computing (August/September 1985), pages 28-29

Keep your fingers flexed for this fast action game all the way from Ontario,
programmed by Cyrus D. Feyz.

In this game, the player is the one man squad who moves into the enemy field
to gain points by disabling enemy posts with as few moves as possible. Each
enemy post is shown by an inverse asterisk. The player who acts as a
one-person-squad is not allowed to retrace any part of his trail since he
might have alerted the enemy about his moves. The boundary of the field is
heavily guarded by the enemy and the player must stay away from it.

The game becomes more interesting by offering fields of different sizes in
each round, designated in the program as fields 1 to 5 for each level. The
levels offer further features of increased number of enemy posts, and off
limit stations above level 5.

The moves: up, down, left and right are controlled by the keys W, S, H and
J, respectively. The squad continues to move in its direction unless another
key is pressed. At the beginning of each game, level and field numbers are
displayed, and after the fields are drawn the enemy posts and off limit
stations are shown. The player must watch carefully while the enemy posts
appear, since the initial position of the squad coincides with the last
enemy post or off limit station. Of course, the squad has to move away from
its initial position by the count of 20 to avoid losing. Once the task is
completed, the squad is discharged by pressing the appropriate key that
reverses the squad's direction. At the end of each round a table is
displayed which shows: level and field played, moves, point and score.

[As listed, the player must be holding down a movement key before the final
enemy post is drawn. The game does not detect whether all enemy posts have
been disabled but instead only exits a field when the player retraces their
step or enters the boundary of the playing area.]


**********************************************************************
DICEY
from ZX Computing, August/September 1985

Challenge your computer or a friend to play Brian D. Cook's
game which is the rage of Essex.


A monster of a program but one which is well worth typing in. I have not seen
another version of this game published and can guarantee that it's not
another rehash of an old chestnut! Extensive instructions are given in the
program but a brief outline may encourage you to make the effort to enter it.

It is a two player game, either you and a friend or against the computer (who
plays a mean game and Brian assures me it doesn't cheat!), played on a board
drawn on screen.

The aim of the game is for a player to manoeuvre so that three counters are
in his part of the board which is a 9x13 grid. Each player's home area is the
outer three columns of each lane, shown in red. There are nine counters which
a player can move, one in each lane.

The counters are moved depending on the result of throwing five dice, eg.
throwing three sixes would move the counter in the 6 lane two squares towards
the player, (ie. one square less than the number of sixes thrown).

Don't worry if this sounds obscure; as I said, full instructions are provided
in the program and prompts are supplied during the game. I found it easy to
get the idea after actually playing it. A game which ranks with some of the
commercial programs on the market!


**********************************************************************


INFERNO
ZX Computing Aug/Sep.1985

David Peat adds fuel to the fire with this
hot little game from burning Mansfield.

The inhabitants of Flaming Towers are getting a little hot
under the collar; no wonder really, the whole building has been
set alight by an itinerant arsonist. As the flames get higher,
more and more occupants decide that the time has come to
cast their fate to the winds and their bodies to the river below.

Now, you are having a quiet punt on the aforesaid river and,
being of a kindly disposition, try to catch each of the involuntary
divers, using keys 1 and 0 to move left and right respectively.
Ten ex-residents leap from each level that the fire reaches and
you are awarded points for each person caught, depending on
the difficulty of the catch as follows:
	25 points for high and central windows;
	50 points for left and right of centre;
	75, 100 and 150 for low and edge windows.

When the fire finally reaches the top of the building then the game ends.

Line by Line
500	Loop 1 to 7 times for fire levels - r
550	Loop 1 to 10 falls per fire level - x
600/	Sets Random fall position - c
655	Allocates fall height - b
	Works out score value - t
700	Start fall, loop from b to 18
710	Checks for catch and if so increments score - a and the value t

Subroutines
5000	move boat right
6000	move boat left
6500	set fire level
7000	instructions
7200	set up graphics
7500	set up screen


**********************************************************************
