Not The Scorpions

See how far you can take Red by guiding him down a safe passage area unoccupied by Scorpions, if you don't, the spike gets him instead!

Press Space to get Red Travelling Down the Screen, once it's pressed there's no chaging Reds direction.

Tools:

Winape 2.0 Alpha 18 or Later

Select Settings, Memory and in the ROMs Column, Lower becomes OS464 with Upper 0 set to BASIC1-0, by default Lower is OS6128 with Upper 1 set to BASIC1-1 and Upper 7 set to AMSDOS or PARADOS. Loading Not The Scorpions will vary depending on if Upper 7 ROM is or isn't present, an unexpanded 464 for example won't have any ROMs in Upper 7, and it can be selected as "(Emply - Same as Upper 0)".

Loading, Select File, Tape & Show Tape Control, use Open on the Tape Control pannel to select the directory and select the 'Not The Scorpions.cdt' file. Without closing the Tape Control box, Return to the Emulator, if ROMs are present in Upper 7 type |TAPE to switch to Tape Mode, otherwise RUN" or press CTRL+Keypad Enter and follow the onscreen instructions, click the Black Play icon on the Tape Control and press any key, once the game has loaded the Stop Button Icon can be used and Eject to Eject the CDT image.

I prepared a Listing Version which is a series of WHILE..WEND loops from Line 160 onwards and returning there if Red makes it to the next stage, a number of WHILE..WEND loops are used here to allow more code within the same line which the IF THEN ELSE... forces the coder to start a new line. For this game I had to setup a 2nd array to deal with the Colour between the ground and the Scorpions which originally began as an IF THEN ELSE statement and modified to some WHILE..WEND statements. The code worked, though drawing the screen was slow, so I setup a 2nd array with the pen colour which allowed me to improve the screen drawing process (Lines 430..450) without using IFs or WHILEs. A WHILE..WEND exists (Lines 270..290) is used to make sure a Scorpions hasn't been placed in that spot.

10 ' Not the Scorpions Long Version
20 ' 
30 ' Setup Screen and Graphics
40 MODE 0
50 CALL &BB03
60 BORDER 3
70 INK 0,3
80 INK 2,15
90 SYMBOL 255,32,28,2,193,235,127,62,85
120 ' Setup Variables and Array
130 DEFINT a-z
140 DIM a$(1000)
150 ' Return here if progressing to the next stage
160 WHILE 1
170   ' Setup Game Screen
180   p=21
190   WHILE p<=500
200      a$(p)=CHR$(207)
210      a$(500+p)=CHR$(50)
220      p=p+1
230   WEND
240   ' Place some Scorpions in it
250   FOR a=1 TO 10+s
260     p=(RND*279)+200
270     WHILE a$(p)=CHR$(255)
280       p=(RND*279)+200
290     WEND
300     a$(p)=CHR$(255)
310     a$(500+p)=CHR$(53)
320   NEXT a
330   ' The Top Line Represents a Space...
340   FOR p=1 TO 20
350     a$(p)=" "
360   NEXT p
370   ' ...with a Spike at the end of it!
380   LOCATE 20,1
390   PEN 3
400   PRINT CHR$(247);
410   ' Now I can Draw the game screen in the appropriate colour
420   LOCATE 1,2
430   FOR p=21 TO 500
440     PRINT CHR$(15);a$(500+p);a$(p);
450   NEXT p
460   ' Initial values for variables used.
470   p=1:h=1:v=0:z=0:x=1:y=1:u=224:GOSUB 990:t=0
480   ' Main Game Loop
490   WHILE z=0
500     u=32
510     GOSUB 990
520     x=x+h
530     y=y+v
540     u=224
550     GOSUB 990
560     f=0
570     ' Game over if Man lands on spike!
580     WHILE x=20 AND f=0
590       z=1
600       f=1
610     WEND
620     f=0
630     ' Calculates the new position in the Array if Man is moving down
640     WHILE v=1 AND f=0
650       p=p+20
660       f=1
670     WEND
680     ' Otherwise calculate the position in the Array if Man is moving across
690     WHILE v=0 AND f=0
700       p=p+1
710       f=1
720     WEND
730     f=0
740     ' Has Space been pressed?
750     WHILE INKEY(47)=0 AND t=0
760       u=32
770       GOSUB 990
780       h=0
790       v=1
800       t=1
810       u=224
820       GOSUB 990
830     WEND
840     f=0
850     ' Does the Array position contain a Scorpion?
860     WHILE a$(p)=CHR$(255) AND f=0
870       z=1
880       f=1
890     WEND
900     ' Or has man reached the bottom of the screen?
910     IF y=25 THEN z=2
920   WEND
930   ' Either game over (z=1) or progress to the next stage (z=2)
940   IF z=1 THEN u=225:GOSUB 990:LOCATE 5,1:PEN 2:PRINT"Game Over!":WHILE INKEY$<>"":WEND ELSE IF z=2 THEN s=s+1
950   IF z=1 THEN SOUND 1,900,50,15:CALL &BB18:RUN ELSE CLS:LOCATE 7,12:PRINT"Stage ";s+1:WEND
960 ' Subroutine to display appropriate graphics
970 ' x & y = xpos and ypos positions
980 ' u = graphic object (u = 32 for space, u = 224 you or u = 225 you dead, u = 207 ground & 255 = scorpion)
990 LOCATE x,y
1000 SOUND 1,y*2,1,15
1010 PEN 1
1020 PRINT CHR$(u);
1030 RETURN