====== NAVES ====== {{:otros:Naves_p1.jpg?690|}} ===== Info ===== ^ Author | ???????????? | ^ Compatibility | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | 1989 | ^ Gender | Arcade | ^ Controls | Keyboard | ^ Language | Spanish | ^ Status | [[preserved|Preserved]] | ===== Screenshots ===== {{:otros:Naves_screenshot01.png?220}} {{:otros:Naves_screenshot02.png?220}} {{:otros:Naves_screenshot03.png?220}} {{:otros:Naves_screenshot04.png?220}} ===== 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 ===== * {{:otros:Naves (Basic).zip|Naves }}(game in dsk format, compressed with zip) ===== Video ===== {{ youtube>MSWD3IB9YWk?large }}