User Tools

Site Tools




Author Tim Granger
Compatibility Amstrad PCW 8256 / 8512 / 9512
Year 1993
Gender Arcade
Controls Keyboard
Language English
Status Preserved



There are many maze games for the PCW, but most of them lack a purpose other than to escape from the maze with various difficulties, but we have never seen them with seriousness, which this game is about.

Our task in the labyrinth will be to collect as many precious gems as possible, shown on the screen with the letter “o” and collected by passing over them. We appear in the upper left part of the screen with a light green “o”, whenever the game starts, and we move with the cursor keys. There are small bricks in the labyrinth that will prevent us from accessing a new corridor. We can only pass over them if we have enough gems, but keeping in mind that for each block that is destroyed we will lose a gem.

We will have to be aware of the monsters, they appear as a kind of cross, that if we touch them the game will be over. We can kill them but getting rid of them will cost us three gems. We will do it by looking at it and pressing the space bar.

If in any of the levels we get locked up, we will only have to shoot at the wall, which will turn into a monster and we will have to shoot on it.

Fortunately, we will start the game with seven gems (hence the importance of collecting as many as we can) in order to overcome any obstacles.

One of the difficulties that we find in the game is that we will always fall downwards, hence its name “gravity”, but we can solve them by being skillful with the cursor keys.

There are four levels of play, from “easy” to “hard”. Each skill level is divided into ten levels with increasing difficulty, number of monsters, blocks and gems. We will pass the level once we have collected all the gems at the bottom right of the screen.


  • Listing - GRAVITY.BAS
1 ' Gravity by Tim Granger
2 ' PCW Plus issue 82, pages 54-55
3 '
5 clock=256*PEEK(2)-10
10 INPUT "Enter skill level, 1-4 (1=Easy) ",k
20 h=1:sc=0:ge=7:e$=CHR$(27):DEF FNt$(x,y)=e$+"Y"+CHR$(32+x)+CHR$(31+y)
30 DATA Easy,.5,8,10,5,Medium,1,10,16,10,Hard,1.5,10,25,15,Outrageous,2.5,14,30,25
40 DATA 6,5,6,6,6,9,7,11,8,13,8,13,7,10,6,9,5,7,4,8,31,6,30,1,0,-1,1,0,0,1,-1,0
50 DATA 149,154,149,154,149,187,128,143
60 DIM ad[4,2],pt$[32,65],i[4,4],n[10,3]
70 FOR a=1 TO 4:READ t$[a]:FOR b=1 TO 4:READ i[a,b]:NEXT b,a:RANDOMIZE PEEK (clock+2)
80 FOR a=1 TO 10:READ p,q:n[a,1]=3*p:n[a,2]=2*q:n[a,3]=2*a:NEXT a
90 FOR a=1 TO 4:READ ch[a]:NEXT a:FOR a=1 TO 4:FOR b=1 TO 2:READ ad[a,b]:NEXT b,a
100 FOR a=1 TO 5:READ q:a$[a]=CHR$(q):NEXT a:FOR a=1 TO 3:READ p:s$[a]=CHR$(p):NEXT a
110 m=i[k,1]:xc=2*i[k,2]:sd=2*i[k,3]:p=i[k,4]:PRINT e$+"f"+e$+"0"
120 PRINT e$+"E":PRINT FNt$(30,0)t$[k];FNt$(30,15)"Level";h:w=0:GOSUB 400:GOSUB 410
130 v=0:FOR a=0 TO xc+2:FOR b=0 TO sd+2:pt$[a,b]=" ":NEXT b,a
140 FOR a=1 TO 3:no=INT(xc*sd*m*n[h,a]/400):GOSUB 440:NEXT a
150 FOR a=2 TO xc STEP 2:FOR b=2 TO sd STEP 2:z=0:GOSUB 420:NEXT b,a
160 FOR a=3 TO xc-1 STEP 2:FOR b=3 TO sd-1 STEP 2:z=1:GOSUB 420:NEXT b,a
170 FOR a=2 TO sd STEP 2:pt$[1,a]=CHR$(154):pt$[xc+1,a]=CHR$(154):NEXT a
180 FOR a=2 TO xc STEP 2:pt$[a,1]=CHR$(149):pt$[a,sd+1]=CHR$(149):NEXT a
190 pt$[2,2]=" ":pt$[2,3]=" ":pt$[3,2]=" ":FOR a=1 TO xc+1 STEP 2:FOR b=1 TO sd+1 STEP 2
200 t=0:FOR c=1 TO 4:IF pt$[a+ad[c,1],b+ad[c,2]]<>" " THEN t=t+2^(4-c)
210 NEXT c:pt$[a,b]=CHR$(144+t):NEXT b,a
220 FOR a=1 TO xc+1:FOR b=1 TO sd+1:PRINT pt$[a,b];:NEXT b:PRINT:NEXT a:x=2:y=2
230 PRINT FNt$(x,y)CHR$(188):IF x=xc AND y=sd THEN h=h+1:IF h<11 THEN 120 ELSE 340
240 v=v+1:f$=INKEY$:IF INT(v/50)=v/50 THEN f$=CHR$(30)
250 IF f$="" THEN 240 ELSE f=ASC(f$):IF d>0 THEN d1=d
260 d=0:FOR a=1 TO 4:IF ch[a]=f THEN d=5-a
270 NEXT a:IF f=113 OR f=81 THEN r=143:GOTO 310
280 IF f=32 AND ge>2 THEN w=-3:GOSUB 400:i=x:j=y:GOSUB 350:GOTO 240 ELSE IF d=0 THEN 240
290 r=ASC(pt$[x+ad[d,1],y+ad[d,2]]):IF r=32 THEN 330
300 IF r=187 THEN w=1:GOSUB 400:pt$[x+ad[d,1],y+ad[d,2]]=" ":GOTO 330
310 IF r=143 THEN PRINT FNt$(30,35)"You're Dead!";e$+"e":END
320 IF r=128 AND ge>0 THEN w=-1:GOSUB 400:pt$[x+ad[d,1],y+ad[d,2]]=" ":GOTO 330 ELSE 240
330 PRINT FNt$(x,y)" ":x=x+ad[d,1]:y=y+ad[d,2]:GOTO 230
340 GOSUB 410:PRINT FNt$(30,35)"End of skill level";e$+"e":END
350 PRINT FNt$(i,j)" ":PRINT FNt$(x,y)CHR$(188):i=i+ad[d1,1]:j=j+ad[d1,2]
360 r=ASC(pt$[i,j]):IF r=128 THEN PRINT FNt$(i,j)" ":pt$[i,j]=" ":RETURN
370 IF r=149 OR r=154 THEN PRINT FNt$(i,j)CHR$(143):pt$[i,j]=CHR$(143):RETURN
380 IF r=32 THEN PRINT FNt$(i,j)"+":GOTO 350
390 PRINT FNt$(i,j)CHR$(128):pt$[i,j]=CHR$(128):RETURN
400 ge=ge+w:PRINT FNt$(30,60)"Gems:";ge;e$+"H":RETURN
410 IF v>0 THEN sc=sc+(ge*p)+INT(10^6/(v/m/m)):PRINT FNt$(30,75)"Score:"sc;e$+"H":RETURN
420 IF pt$[a-1,b]+pt$[a,b-1]+pt$[a+1,b]+pt$[a,b+1]<>"    " THEN RETURN
430 g=INT(RND*4)+1:pt$[a+ad[g,1],b+ad[g,2]]=a$[g+z]:RETURN
440 FOR b=1 TO no:pt$[2*INT(0.5*RND*xc+1),2*INT(0.5*RND*sd+1)]=s$[a]:NEXT b:RETURN


       ↑ = UP
       ↓ = DOWN
       → = RIGHT
       ← = LEFT
       Q = EXIT

Loading the program

 1.- Insert the CP/M disc on side 2
 2.- Write BASIC and wait for it to load
 3.- Remove the CP/M disk and insert the disk containing the Gravity game
 4.- Type run "Gravity" and press the "ENTER" key


gravity_programa_01.jpg gravity_programa_02.jpg


  • Gravity (game in dsk format, compressed with zip)
en/gravity.txt · Last modified: 2022/06/30 11:07 by jevicac