Автор: Ken North
Год: 1982
Издатели: ZX Computing
Языки:
Формат:
Требования:
Ссылки:
Скриншоты:
Описание:
Navarone Ablaze!— это шутер, разработанный Кеном Нортом в 1982 году и опубликованный в ZX Computing. Игра предназначена для платформ ZX Spectrum 48K и ZX81 16K. Она представляет собой боковой скроллер, где игрок управляет самолетом, летящим справа налево над зенитной батареей.
Основная цель — сбрасывать бомбы на зенитные орудия, чтобы уничтожить их. Игроки могут сбрасывать бомбы, нажав клавишу 'M'. Игра ставит перед игроками задачу действовать быстро, так как стрелки точны и знают точную высоту самолета игрока. Чтобы выжить в раунде, нужно быстро уничтожить орудия.
Механика игры включает пользовательские графики, где определенные символы представляют самолет, бомбы и орудия. Экран настроен с белым небом, зелёной землёй и чёрной границей. Игровой цикл включает полет самолета, сброс бомб и уклонение от выстрелов зенитных орудий.
Игра позволяет некоторую настройку, например, изменение сложности путем изменения частоты огня зенитных орудий. Очки увеличиваются по мере успешного уничтожения всех орудий, а игра заканчивается, когда все самолеты потеряны. Программа включает в себя процедуры для настройки графики, управления движением самолета и бомб, и проверки попаданий по орудиям.
NAVARONE ABLAZE!
----------------
by Ken North
from ZX Computing, October/November 1982
A few user-defined graphics here, a blob of colour there, a BEEP or two tc
keep the neighbours bemused, and Ken North Of Ashford, creates this program
to keep trigger fingers twitching.
This program shows an aircraft flying from right to left above an
anti-aircraft battery. The A.A. guns are firing at the aircraft, and the
aircraft can drop bombs to destroy the guns. You drop a bomb by pressing the
'M' key.
The A.A. fire reduces when you knock out a gun, but beware, the gunners are
very accurate and have found your exact height, so you must knock a gun out
very quickly to survive a round.
The main program runs from line 10 to 299, and the REMs explain what the
other routines do.
The first section, lines 10 to 100, sets up the screen. Line 10 calls the
routine to set up the user-defined graphics. The DATA for these were
converted to decimal numbers, and then stored in lines 1100 to 1120. These
are then read and POKEd into the appropriate character. The aircraft uses the
graphic characters "A", "B" and "C". The bomb is "D" and the gun is "E".
Lines 20 and 30 set the screen colours to a white sky, green ground and a
black border.
The CLS command, after changing PAPER colour is, as you probably know,
important. If you don't CLS, the old paper colour remains, and only changes
when you print something, which can give you some strange and colourful
(although unwanted) effects.
Lines 40 and 60 set up the variables.
Lines 70 to 90 find the gun positions, line 85 checks for three different
positions, and line 100 prints the guns. The "E" is a graphics "E" which will
change to the gun after the first call to subroutine 1000.
Lines 110 to 200 are the loop for the aircraft printed in line 120. The "A",
"B" and "C" are the graphics and, in line 100, the trailing space is to clear
the last character as the aircraft moves across the screen. Line 140 checks
for key "M" and sets a flag F1. If set, the program jumps to the "bomb drop
routine". If clear, a PAUSE is put in so that the program runs at the same
speed as it does when a bomb is dropped.
The A.A. fire is controlled by line 170. The values can be changed to make
the game easier or harder, but the 1.8 seemed a good compromise. Line 180
again puts in a PAUSE to keep the routine the same, whether the guns fire or
not.
The variable HITS in line 190 checks to see if all three guns have been
destroyed, and if it finds that they have, increments the score, and then
branches to clear the ground and print a new battery. The rest of the main
program prints your score after you have lost all your aircraft.
The BOMB DROP routine prints the bomb if F1 is set. If the bomb hits the
ground, F1 is reset for the next key-push.
The check, to see if you have hit a gun, uses the ATTR function in line 340.
The ATTRibute call returns a value � in binary � which depends on certain
conditions. The MSB (bit 7) is for FLASH, bit 6 is for BRIGHT, bits 5 to 3
for PAPER colour and bits 2 to 0 for INK colour. In case of the gun, it is
not flashing, and is normal brightness, so bits 7 and 6 are at zero. The
PAPER is white, so bits 5 to 3 are all ones and the INK is red, so bit 1 is 1
and bits 2 and 0 are zero. This gives a BIN 00111010 which, when converted to
decimal, gives 58. If the program returns 58 at line 340, it branches to 400,
the SCORE and BANG routine. This causes the guns to explode ... and
increments the score.
The A.A. routine called by line 170 puts a flash on the screen, and checks if
it coincides with the nose of the aircraft. If it does, it calls the
SHOOTDOWN routine at line 600. SHOOTDOWN makes the aircraft crash, flashing
as it does so. The flash is confined to the plane, as it is locally defined
in the PRINT statement, and therefore ends with the statement. A PAUSE
follows, to allow you to get your breath back, before the action starts
again. You get six aircraft to try and destroy as many guns as you can.
If you want to make changes in colour, or to the A.A. fire, the only line you
have to be careful of is 340 with the ATTR function call. If you change the
sky colour (PAPER), or the gun colour (INK), you will have to work out the
corresponding ATTRibute, referring to page 116 of the manual.
Another thing to watch is whether the keyboard is in the C or L mode for the
bomb-drop. I've made the program run for the C mode, but line 140 could be
changed to read both by changing it to:
140 IF INKEY$="M" OR INKEY$="m" THEN LET F1=1
----------------
by Ken North
from ZX Computing, October/November 1982
A few user-defined graphics here, a blob of colour there, a BEEP or two tc
keep the neighbours bemused, and Ken North Of Ashford, creates this program
to keep trigger fingers twitching.
This program shows an aircraft flying from right to left above an
anti-aircraft battery. The A.A. guns are firing at the aircraft, and the
aircraft can drop bombs to destroy the guns. You drop a bomb by pressing the
'M' key.
The A.A. fire reduces when you knock out a gun, but beware, the gunners are
very accurate and have found your exact height, so you must knock a gun out
very quickly to survive a round.
The main program runs from line 10 to 299, and the REMs explain what the
other routines do.
The first section, lines 10 to 100, sets up the screen. Line 10 calls the
routine to set up the user-defined graphics. The DATA for these were
converted to decimal numbers, and then stored in lines 1100 to 1120. These
are then read and POKEd into the appropriate character. The aircraft uses the
graphic characters "A", "B" and "C". The bomb is "D" and the gun is "E".
Lines 20 and 30 set the screen colours to a white sky, green ground and a
black border.
The CLS command, after changing PAPER colour is, as you probably know,
important. If you don't CLS, the old paper colour remains, and only changes
when you print something, which can give you some strange and colourful
(although unwanted) effects.
Lines 40 and 60 set up the variables.
Lines 70 to 90 find the gun positions, line 85 checks for three different
positions, and line 100 prints the guns. The "E" is a graphics "E" which will
change to the gun after the first call to subroutine 1000.
Lines 110 to 200 are the loop for the aircraft printed in line 120. The "A",
"B" and "C" are the graphics and, in line 100, the trailing space is to clear
the last character as the aircraft moves across the screen. Line 140 checks
for key "M" and sets a flag F1. If set, the program jumps to the "bomb drop
routine". If clear, a PAUSE is put in so that the program runs at the same
speed as it does when a bomb is dropped.
The A.A. fire is controlled by line 170. The values can be changed to make
the game easier or harder, but the 1.8 seemed a good compromise. Line 180
again puts in a PAUSE to keep the routine the same, whether the guns fire or
not.
The variable HITS in line 190 checks to see if all three guns have been
destroyed, and if it finds that they have, increments the score, and then
branches to clear the ground and print a new battery. The rest of the main
program prints your score after you have lost all your aircraft.
The BOMB DROP routine prints the bomb if F1 is set. If the bomb hits the
ground, F1 is reset for the next key-push.
The check, to see if you have hit a gun, uses the ATTR function in line 340.
The ATTRibute call returns a value � in binary � which depends on certain
conditions. The MSB (bit 7) is for FLASH, bit 6 is for BRIGHT, bits 5 to 3
for PAPER colour and bits 2 to 0 for INK colour. In case of the gun, it is
not flashing, and is normal brightness, so bits 7 and 6 are at zero. The
PAPER is white, so bits 5 to 3 are all ones and the INK is red, so bit 1 is 1
and bits 2 and 0 are zero. This gives a BIN 00111010 which, when converted to
decimal, gives 58. If the program returns 58 at line 340, it branches to 400,
the SCORE and BANG routine. This causes the guns to explode ... and
increments the score.
The A.A. routine called by line 170 puts a flash on the screen, and checks if
it coincides with the nose of the aircraft. If it does, it calls the
SHOOTDOWN routine at line 600. SHOOTDOWN makes the aircraft crash, flashing
as it does so. The flash is confined to the plane, as it is locally defined
in the PRINT statement, and therefore ends with the statement. A PAUSE
follows, to allow you to get your breath back, before the action starts
again. You get six aircraft to try and destroy as many guns as you can.
If you want to make changes in colour, or to the A.A. fire, the only line you
have to be careful of is 340 with the ATTR function call. If you change the
sky colour (PAPER), or the gun colour (INK), you will have to work out the
corresponding ATTRibute, referring to page 116 of the manual.
Another thing to watch is whether the keyboard is in the C or L mode for the
bomb-drop. I've made the program run for the C mode, but line 140 could be
changed to read both by changing it to:
140 IF INKEY$="M" OR INKEY$="m" THEN LET F1=1