Juego de barcos entre QL y ZX Spectrum

Descripción del contenido de la página

Juego de barcos escrito en SuperBASIC para la Sinclair QL; el contrincante utiliza una ZX Spectrum y ambas computadoras se comunican mediante un cable serial.

Etiquetas:

No recuerdo si este juego de barcos es una adaptación que hice de alguno de los muchos similares que circulaban para la ZX Spectrum. Probablemente fuera así. La batalla naval se libra entre una QL y una ZX Spectrum comunicadas por un cable serial. El programa equivalente para la ZX Spectrum debe de estar en mi archivo y en cuanto lo prepare lo publicaré y lo enlazaré desde esta página.

Tres años después escribí una versión modificada de este mismo juego de barcos, para jugar con dos QL en red.

Código fuente

10 REMark Juego de barcos entre QL y Spectrum
15 REMark mediante RS232C (SER1)
20 :
25 REMark Copyright (C) 1987, 1988 Marcos Cruz (http://programandala.net)
30 REMark Licencia/Permesilo/License: http://programandala.net/licencia
35 :
40 REMark 1987-04
45 REMark 1988-01-22 Ajustado
50 :
55 REMark Inicializacion RS232C:
60 :
70 OPEN#3,ser2c
75 BAUD 4800
80 :
92 REMark Preparacion:
93 :
100 nb=8
105 RESTORE
110 DIM p(10,10)
120 DIM b(nb)
130 DIM b$(nb,12)
140 FOR i=1 TO nb
150 READ b(i),b$(i)
160 NEXT i
170 DATA 1,"LANCHA"
180 DATA 1,"LANCHA"
190 DATA 2,"CRUCERO"
200 DATA 2,"CRUCERO"
210 DATA 3,"ACORAZADO"
220 DATA 3,"ACORAZADO"
230 DATA 4,"DESTRUCTOR"
240 DATA 5,"PORTAAVIONES"
250 :
260 REMark Decidir quien es quien:
270 :
300 INPUT#3;j$:j$=j$(1)
320 :
330 REMark Preparar pantalla:
340 :
345 CLS#0:CLS#1
350 col=0
360 IF j$="2" THEN col=7
380 PAPER 7
390 INK 0
400 CLS
410 PRINT "BATALLA DE BARCOS VIA RS232C"
420 PRINT
430 PRINT "JUGADOR ";j$
440 PRINT
450 PRINT "BARCOS TUYOS      ";
460 PRINT "BARCOS ENEMIGOS"
465 PRINT
470 PRINT " 0123456789        ";
480 PRINT "0123456789"
490 FOR i=1 TO 10
500 PRINT CHR$(i+64);"..........       ";
510 PRINT CHR$(i+64);".........."
520 NEXT i
530 :
540 REMark Colocar barcos:
550 :
560 FOR i=1 TO nb
570 m$=i&". "&b$(i)&" "&b(i)&" CUADROS":GO SUB 8000
580 GO SUB 9000
585 IF p(le,nu) THEN GO TO 580
586 IF b(i)=1 THEN ili=0:ico=0:GO TO 671
590 INPUT#0;"A, B, D o I ? ";a$
600 IF a$>="a" THEN a$=CHR$(CODE(a$)-32)
610 IF a$<>"A" AND a$<>"B" AND a$<>"D" AND a$<>"I" THEN GO TO 590
620 IF a$="A" THEN ili=-1:ico=0
630 IF a$="B" THEN ili=1:ico=0
640 IF a$="D" THEN ili=0:ico=1
650 IF a$="I" THEN ili=0:ico=-1
660 IF le+ili*b(i)<1 OR le+ili*b(i)>10 THEN GO TO 590
670 IF nu+ico*b(i)<1 OR nu+ico*b(i)>10 THEN GO TO 590
671 le2=le:nu2=nu
672 FOR j=1 TO b(i)
673 IF p(le2,nu2) THEN GO TO 580
674 le2=le2+ili:nu2=nu2+ico
675 NEXT j
680 INK b(i)
690 FOR j=1 TO b(i)
700 AT li,co:PRINT "χ"
710 li=li+ili
720 co=co+ico
730 p(le,nu)=b(i)
740 le=le+ili
750 nu=nu+ico
760 NEXT j
770 INK 0
780 NEXT i
790 m$="LISTOS PARA ENTRAR EN COMBATE":GO SUB 8000
800 :
810 REMark Seleccion:
820 :
830 IF j$="2" THEN GO TO 5000
840 :
850 REMark Disparar al Spectrum:
860 :
870 m$="DISPARA AL SPECTRUM:":GO SUB 8000
880 GO SUB 9000
885 AT li,co+18:PRINT "*"
890 PRINT#3;a$:REMark disparo
900 m$="ESPERANDO RESULTADOS":GO SUB 8000
910 INPUT#3,a$:a$=a$(LEN(a$)-1 TO)
920 a=a$(1)
925 x=a$(2)
930 IF a=1 THEN AT li,co+18:PRINT "O":m$="¡AGUA!"
940 IF a>1 THEN AT li,co+18:PRINT "X":m$="¡BARCO TOCADO!"
950 IF a>2 THEN m$="¡"&b$(x)&" ENEMIGO HUNDIDO!"
955 GO SUB 8000
960 IF a=4 THEN m$="¡HAS GANADO LA PARTIDA!":GO SUB 8000:GO TO 9900
4990 :
5000 REMark Esperar disparo del Spectrum:
5010 :
5020 m$="ESPERANDO DISPARO DEL SPECTRUM":GO SUB 8000
5030 INPUT#3,a$:a$=a$(LEN(a$)-1 TO)
5040 GO SUB 9062
5050 m$="SPECTRUM DISPARA A "&a$:GO SUB 8000
5060 x=p(le,nu)
5070 p(le,nu)=0
5080 IF x=0 THEN a=1:GO TO 5500
5090 a=2
5100 b(x)=b(x)-1
5110 IF b(x)=0 THEN a=3:nb=nb-1
5120 IF nb=0 THEN a=4
5500 a$=a&x
5510 PRINT#3;a$
5520 IF a=1 THEN AT li,co:PRINT "O":m$="¡AGUA!"
5530 IF a>1 THEN AT li,co:PRINT "X":m$=b$(x)&" TOCADO"
5540 IF a>2 THEN m$="¡"&m$&" Y HUNDIDO!"
5550 GO SUB 8000
5560 IF a=4 THEN m$="HAS PERDIDO LA PARTIDA...":GO SUB 8000:GO TO 9900
5570 GO TO 850
7990 :
8000 REMark Subrutina mensaje m$:
8010 :
8015 CLS#0
8020 AT 18,0:PRINT "                                "
8030 AT 18,0:PRINT m$
8040 PAUSE 75
8050 RETurn
8990 :
9000 REMark Subrutina coordenadas:
9010 :
9020 INPUT#0;"Coordenadas? ";a$
9030 IF LEN(a$)<>2 THEN GO TO 9020
9040 c=CODE(a$):IF c>=97 THEN a$(1)=CHR$(c-32)
9050 IF a$(1)<"A" OR a$(1)>"J" THEN GO TO 9020
9060 IF a$(2)<"0" OR a$(2)>"9" THEN GO TO 9020
9061 :
9062 REMark Descifrar coordenadas:
9063 :
9070 le=CODE(a$)-64
9080 nu=a$(2)+1
9090 li=le+6
9100 co=nu
9110 RETurn
9890 :
9900 REMark Final de la partida:
9910 :
9920 STOP

Descargas

barcos_ql_spectrum_bas (3.78 KiB)