User Tools

Site Tools


en:naves

NAVES

Info

Author ????????????
Compatibility Amstrad PCW 8256 / 8512 / 9512
Year 1989
Gender Arcade
Controls Keyboard
Language Spanish
Status Preserved

Screenshots

Description

Ships is a classic martian killer, where our mission is to make the highest score. The graphics are good, although like any PCW game, there is a lack of good sound.

The game starts with 5 lives displayed at the top right of the screen. The score at the top left of the screen.

It's a mix between a Martian battle and an Arkanoid battle, since we have to break the brick barrier that protects them by launching missiles in order to finish off the Martians that are invading us.

Listing

  • Listing 1 - SHIPS.BAS
30 MEMORY &HEA5F
35 GOSUB 9400
40 lin9%=15:col9%=40:GOSUB 9403:GOSUB 9406:PRINT " CARGANDO PROGRAMAS ":GOSUB 9407
105 DIM letra(65):DIM reg$(224)
110 GOSUB 5000
120 PRINT " HASTA NUMERO SEA IGUAL A <<< 222 *>>>.....: ";:FOR codigo=200 TO 222
121 PRINT codigo;"*";
130 GOSUB 6000
135 IF LEN(a$)=0 THEN 160
140 GOSUB 2100
150 GOSUB 3000
160 NEXT codigo
170 CHAIN "naves.rut"
2100 REM ---------------Averiguar punto punto-------------
2110 i=0
2120 FOR c=1 TO 8
2125 sum=0
2130 FOR l=1 TO 8
2140 i=i+1
2150 a=letra(i)
2160 IF a=0 THEN 2250
2170 IF l=1 THEN sum=sum+128
2180 IF l=2 THEN sum=sum+64
2190 IF l=3 THEN sum=sum+32
2200 IF l=4 THEN sum=sum+16
2210 IF l=5 THEN sum=sum+8
2220 IF l=6 THEN sum=sum+4
2230 IF l=7 THEN sum=sum+2
2240 IF l=8 THEN sum=sum+1
2250 NEXT l
2255 sum(c)=sum
2260 NEXT c
2270 RETURN
3000 REM ----------- Crear caracter ------------
3010 RESTORE 3030
3020 FOR n=0 TO 53:READ a:POKE &HEA60+n,a:NEXT n
3030 DATA 42,1,0,17,87,0,237,90
3040 DATA 34,123,234,33,160,234,1,128
3050 DATA 234,205,122,234,233,0,0,201
3060 DATA 0,0,195,0,0,201,0,0
3070 DATA 126,35,229,111,38,0,41,41
3080 DATA 41,17,0,184,25,229,209,225
3090 DATA 1,8,0,237,176,201
3100 POKE &HEAA0,codigo
3110 FOR n=1 TO 8
3120 v=sum(n)
3130 POKE &HEAA0+n,v
3140 NEXT n
3150 rutina=&HEA60
3160 CALL rutina
3170 RETURN
5000 REM-------escoger juego de caracteres------------
5010 juego$="naves.tec"
5015 ON ERROR GOTO 5100
5020 OPEN "I",1,juego$
5030 FOR i=1 TO 224
5040 INPUT #1,a$
5050 reg$(i)=a$
5060 NEXT i
5070 CLOSE
5080 GOTO 120
5100 RESUME 5110
5110 ON ERROR GOTO 0
5111 lin9%=22:col9%=1:GOSUB 9403:PRINT "NO EXISTE"
5120 GOTO 5000
6000 REM-----------escoger caracter------------
6040 a$=reg$(codigo-31)
6045 IF LEN(a$)=0 THEN RETURN
6050 i=0
6070 FOR c=1 TO 8
6080 sum=VAL(MID$(a$,c*3-2,3))
6090 i=i+1:x=FIX(sum/128):letra(i)=x:sum=sum-(x*128)
6092 i=i+1:x=FIX(sum/64):letra(i)=x:sum=sum-(x*64)
6094 i=i+1:x=FIX(sum/32):letra(i)=x:sum=sum-(x*32)
6096 i=i+1:x=FIX(sum/16):letra(i)=x:sum=sum-(x*16)
6098 i=i+1:x=FIX(sum/8):letra(i)=x:sum=sum-(x*8)
6100 i=i+1:x=FIX(sum/4):letra(i)=x:sum=sum-(x*4)
6102 i=i+1:x=FIX(sum/2):letra(i)=x:sum=sum-(x*2)
6104 i=i+1:x=FIX(sum/1):letra(i)=x:sum=sum-(x*1)
6106 NEXT c
6150 RETURN
9400 REM ***********CONTROL PANTALLA*************
9401 ESC$=CHR$(27):DEF FNL$(LIN9%,COL9%)=ESC$+"Y"+CHR$(31+LIN9%)+CHR$(31+COL9%):WIDTH 255
9402 PRINT ESC$;"E";ESC$;"H":RETURN:REM.......BORRAR PANTALLA
9403 PRINT FNL$(LIN9%,COL9%);:RETURN:REM......LOCATE//POSICION
9404 PRINT ESC$;"K";:RETURN:REM...............BORRA HASTA FINAL DE LINEA
9405 PRINT ESC$;"J";:RETURN:REM...............BORRA HASTA FINAL DE PAGINA
9406 PRINT ESC$;"p";:RETURN:REM...............VIDEO INVERSO
9407 PRINT ESC$;"q";:RETURN:REM...............VIDEO NORMAL
  • Listing 2 - NAVES.RUT
10 REM -------------naves----------------25/2/89----------
12 CLEAR
13 OPTION RUN
14 GOSUB 9400
15 GOSUB 8000
20 nave=45:GOSUB 1050
30 ene(1)=10:ene(2)=40:ene(3)=50:ene(4)=80:GOSUB 3000
500 REM----------captar  teclado---------
510 x$=INKEY$:PRINT FN at$(3,2,"PUNTOS: "+STR$(puntos))
520 IF x$<>"" THEN mov=ASC(x$) ELSE mov=0
525 IF mov=3 THEN 9000
530 IF mov=1 OR mov=6 THEN GOSUB 1000
540 IF mov=32 THEN GOSUB 2000
542 IF protec THEN protec=protec+1
543 IF protec=50 THEN protec=0
545 GOSUB 3000
546 IF bicho<>50 THEN bicho=bicho+1:colb=2:GOTO 550
547 GOSUB 4000
550 GOTO 510
1000 REM---- MOVER NAVE----------
1008 IF mov=dire THEN salto=salto+1 ELSE salto=1:dire=mov
1009 FOR i=1 TO 4:PRINT FN at$(24+i,nave,"   "):NEXT i
1010 IF mov=1 THEN nave=nave-salto
1020 IF mov=6 THEN nave=nave+salto
1030 IF nave<2 THEN nave=2
1040 IF nave>87 THEN nave=87
1045 IF protec THEN GOSUB 9406
1050 PRINT FN at$(26,nave,CHR$(201)+CHR$(204)+CHR$(207))
1055 PRINT FN at$(27,nave,CHR$(202)+CHR$(205)+CHR$(208))
1060 PRINT FN at$(28,nave,CHR$(203)+CHR$(206)+CHR$(209))
1065 GOSUB 9407
1070 RETURN
2000 REM-----------LASER_-----------
2010 col=nave+1:largo=12
2015 FOR k=5 TO 1 STEP -1
2020 IF paret(k,col-1)=0 THEN largo=largo+1
2030 NEXT k
2040 IF largo=17 THEN largo=largo+3 ELSE largo=largo+1
2050 IF largo<18 THEN paret(18-largo,col-1)=0:puntos=puntos+25:conta=conta+1
2055 IF conta=430 THEN 9000
2060 FOR lin9%=25 TO 25-largo STEP-1:OUT 248,11:OUT 248,12:PRINT FN at$(lin9%,col,CHR$(216)):NEXT lin9%
2070 FOR lin9%=25 TO 25-largo STEP-1:PRINT FN at$(lin9%,col,CHR$(32)):NEXT lin9%
2090 IF largo<=17 THEN RETURN
2100 tocado=0
2110 FOR i=1 TO 4
2120 IF col=ene(i) OR col=ene(i)+1 THEN tocado=tocado+1
2130 NEXT i
2135 IF colb=col THEN tocado=tocado+5 ELSE GOTO 2140
2136 FOR i=1 TO 5
2137 OUT 247,12
2138 FOR h=1 TO 300:NEXT h
2139 NEXT i
2140 puntos=puntos+tocado*1000
2150 IF tocado=0 THEN RETURN
2155 IF col=colb THEN bicho=0:RETURN
2160 FOR i=1 TO 100:PRINT FN at$(6,col,CHR$(217)):OUT 248,11:OUT 248,12:NEXT i
2165 protec=1
2170 RETURN
3000 REM-------------ENEMIGOS-----------
3010 i=MAX(FIX(RND*5),1)
3015 PRINT FN at$(6,ene(i),"  ")
3020 ene(i)=MAX(FIX(RND*88),2)
3030 PRINT FN at$(6,ene(i),CHR$(210)+CHR$(211))
3050 x=MAX(FIX(RND*5),1)
3060 FOR lin9%=13 TO 25 STEP 2:PRINT FN at$(lin9%,ene(x)," "):PRINT FN at$(lin9%+2,ene(x),CHR$(215)):NEXT lin9%
3070 PRINT FN at$(27,ene(x)," ")
3075 IF protec THEN RETURN
3080 IF ene(x)=nave OR ene(x)=nave+1 OR ene(x)=nave+2 THEN 3100
3090 RETURN
3100 FOR lin9%=26 TO 28:col9%=nave:GOSUB 9403:PRINT STRING$(3,217):NEXT lin9%
3105 IF LEN(vidas$)=0 THEN 9000
3110 vidas$=LEFT$(vidas$,LEN(vidas$)-2)
3120 lin9%=2:col9%=70:GOSUB 9403:PRINT vidas$;"  "
3125 FOR n=1 TO 500:IF n MOD 15=0 THEN OUT 248,11:OUT 248,12 
3126 NEXT n
3130 FOR lin9%=26 TO 28:col9%=nave:GOSUB 9403:PRINT STRING$(3,32):NEXT lin9%
3140 nave=45:GOSUB 1050:RETURN
4000 REM -------------------BICHO--------------
4009 lin9%=5:col9%=colb:GOSUB 9403:PRINT CHR$(32)
4010 IF colb=88 THEN bicho=0:RETURN
4012 colb=colb+2:lin9%=5:col9%=colb:GOSUB 9403:PRINT CHR$(219)
4020 RETURN
8000 REM------PANTALLA -----------------
8005 DIM paret(5,88)
8006 vidas$=CHR$(218)+CHR$(32)+CHR$(218)+CHR$(32)+CHR$(218)+CHR$(32)+CHR$(218)+CHR$(32)+CHR$(218)+CHR$(32):puntos=0
8010 GOSUB 9402
8020 lin9%=1:col9%=1:GOSUB 9403:PRINT STRING$(90,214)
8025 FOR lin9%=2 TO 29:col9%=1:GOSUB 9403:PRINT CHR$(214);STRING$(88,32);CHR$(214):NEXT lin9%
8030 lin9%=30:col9%=1:GOSUB 9403:PRINT STRING$(90,214);
8035 lin9%=29:col9%=2:GOSUB 9403:PRINT STRING$(88,213)
8040 lin9%=4:col9%=2:GOSUB 9403:PRINT STRING$(88,214)
8050 FOR lin9%=8 TO 12:col9%=2:GOSUB 9403:PRINT STRING$(88,212):NEXT lin9%
8055 FOR i=1 TO 5
8056 FOR h=1 TO 88:paret(i,h)=1:NEXT h:NEXT i
8057 lin9%=2:col9%=70:GOSUB 9403:PRINT vidas$
8060 RETURN
9000 REM -------GAME OVER--------------
9010 GOSUB 9402 :lin9%=15:col9%=40:GOSUB 9403:GOSUB 9406:PRINT " GAME OVER ":GOSUB 9407
9020 lin9%=2:col9%=2:GOSUB 9403:PRINT " PUNTUACION: ";puntos
9030 lin9%=20:col9%=10:GOSUB 9403:PRINT " PULSA";:GOSUB 9406:PRINT" ESPACIO ";:GOSUB 9407:PRINT" PARA OTRA PARTIDA"
9040 lin9%=22:col9%=10:GOSUB 9403:PRINT "PULSA";:GOSUB 9406:PRINT" STOP ";:GOSUB 9407:PRINT" PARA TERMINAR"
9050 x$=INKEY$:IF x$="" THEN 9050 ELSE key=ASC(x$)
9060 IF key=32 THEN 10
9070 IF key=3 THEN END
9080 GOTO 9050
9400 REM ***********CONTROL PANTALLA*************
9401 ESC$=CHR$(27):DEF FNL$(LIN9%,COL9%)=ESC$+"Y"+CHR$(31+LIN9%)+CHR$(31+COL9%):GOSUB 9412:WIDTH 255:DEF FN at$(x,y,z$)=CHR$(27)+"Y"+CHR$(31+x)+CHR$(31+y)+z$
9402 PRINT ESC$;"E";ESC$;"H":RETURN:REM.......BORRAR PANTALLA
9403 PRINT FNL$(LIN9%,COL9%);:RETURN:REM......LOCATE//POSICION
9404 PRINT ESC$;"K";:RETURN:REM...............BORRA HASTA FINAL DE LINEA
9405 PRINT ESC$;"J";:RETURN:REM...............BORRA HASTA FINAL DE PAGINA
9406 PRINT ESC$;"p";:RETURN:REM...............VIDEO INVERSO
9407 PRINT ESC$;"q";:RETURN:REM...............VIDEO NORMAL
9408 PRINT ESC$;"f";:RETURN:REM...............CURSOR APAGADO
9409 PRINT ESC$;"e";:RETURN:REM...............CURSOR ENCENDIDO
9410 PRINT ESC$;"r";:RETURN:REM...............ACTIVA SUBRAYADO
9411 PRINT ESC$;"u";:RETURN:REM...............DESACTIVA SUBRAYADO
9412 PRINT ESC$;"0";:RETURN:REM...............UNIDAD APAGADA

Controls

       ← = LEFT
       → = RIGHT
   SPACE = SHOOT
    EXIT = LEAVE GAME 

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 Ships game
 4.- Type run "Naves" and press the "ENTER" key

Download

  • Naves (game in dsk format, compressed with zip)

Video

en/naves.txt · Last modified: 2022/06/30 12:45 by jevicac