VideojuegosClásicos

6 Listados BASIC – Una tarde de tecleo en tu Amstrad CPC

5
(35)

¿Recuerdas las tardes tecleando listados Basic en tu Amstrad? ¿Quién no cambió el nombre del autor por el suyo?😅😅😅 Toda una tentación…

Aquí tienes unos cuantos listados Basic preparados para copiar y pegar directamente en tu emulador favorito. Luego puedes guardarlo como dsk o cdt y cargarlos en tu Amstrad CPC.

Si no puedes esperar, aquí tienes un archivo de disco con todos los programas listos para jugar y los listados en formato texto.

¿Recuerdas los listados Basic que venían en las revistas y en el manual de nuestro Amstrad?

Listados BASIC para AMSTRAD CPC

NOTA: en los listados se han realizado correcciones que algunos habéis apuntado. Es posible que algún listado pueda contener errores, dejarnos un mensaje y trataremos de corregirlo lo antes posible 😉

Rebotes

Rebotes es un juego sencillo y apasionante, cuyo listado Basic es obra de Alexander Martin, donde tendrás que romper los ladrillos golpeando la pelota con la pala. Es el típico juego machaca ladrillos al estilo de Arkanoid. Para un jugador contra el ordenador, control por teclado o joystick.

10 'REBOTES, por Alexander Martin
20 'copyright (c) AMSOFT 1984
30 '
40 MODE 1:BORDER 1:INK 0,1:INK 1,26:INK 2,24:INK 3,6
50 SPEED KEY 15,2
60 ENV 1,1,18,0,11,0,10
70 ENT 1,10,2,2
80 ENV 3,1,0,16,5,-3,2
90 ENV 2,5,3,3,1,-21,22,9,-3,2
100 ENT -2,10,2,2,5,-7,1,2,11,3,2,-4,8
110 '
120 '
130 MOVE 30,32:DRAWR 0,400,1:MOVE 610,32:DRAWR 0,400,1
140 PEN 3:LOCATE 3,1:PRINT STRING$(36,143)
150 PEN 2:LOCATE 3,2:PRINT STRING$(36,143)
160 PEN 1:FOR r=5 TO 6:LOCATE 3,r:PRINT STRING$(36,143):NEXT r
170 bx=9
180 pelotas=5:puntos=0
190 PEN 1:GOSUB 680:CLEAR INPUT
200 IF INKEY$<>CHR$(32) AND JOY(0)<16 THEN 200
210 LOCATE 3,23:PRINT SPACE$(36):LOCATE 1,24:PRINT SPACE$(40);
220 GOSUB 690:GOSUB 660:GOTO 280
230 '
240 '
250 LOCATE bx,24:PRINT"  ";STRING$(4,131);"  ":RETURN
260 '
270 '
280 xa=1:ya=1:IF INT(RND*2)=1 THEN xa=-xa
290 PEN 1:GOSUB 250
300 ORIGIN 0,400
310 x=bx+4:y=11:x1=x:y1=y
320 '
330 '
340 x1=x+xa:y1=y+ya
350 IF x1=3 OR x1=38 THEN xa=-xa
360 GOSUB 540
370 IF y1=24 AND x1>bx+1 AND x1<bx+6 THEN ya=-ya:y1=y1-2: SOUND 130,44,8,7,1,1:a=((x>bx+5)OR(x<bx+2)):IF a=-1 THEN xa=xa*a:x1=x1+xa:y1=y1+1
380 IF y=25 THEN LOCATE x,y:PRINT" ":GOTO 500
390 GOSUB 250
400 t=TEST((16*x1)-1,-(16*y1)-1)
410 IF t<>0 THEN ya=-ya:xz=x1:yz=y1:y1=y1+ya:GOSUB 590:IF t=2 THEN puntos=puntos+10:GOSUB 660
420 IF t=3 THEN puntos=puntos+20:GOSUB 660
430 IF t=1 THEN puntos=puntos+5:GOSUB 660
440 IF y1=1 THEN ya=1
450 LOCATE x,y:PRINT" ":LOCATE x1,y1:PRINT CHR$(231):x=x1 :y=y1
460 IF y=1 OR x=3 OR x=38 THEN SOUND 129,78,8,7,1,1
470 GOTO 340
480 '
490 '
500 pelotas=pelotas-1:SOUND 132,19,46,12,2,2:IF pelotas=0 THEN GOTO 620
510 GOSUB 660:GOTO 280
520 '
530 '
540 IF (INKEY(8)=0 OR INKEY(74)=0) AND bx>2 THEN bx=bx-2: RETURN
550 IF (INKEY(1)=0 OR INKEY(75)=0) AND bx<32 THEN bx=bx+2 :RETURN
560 RETURN
570 '
580 '
590 LOCATE xz,yz:PRINT" ":RETURN
600 '
610 '
620 IF puntos>=maximo THEN maximo=puntos
630 GOSUB 660:puntos=0:pelotas=5:GOTO 130
640 '
650 '
660 SOUND 130,0,20,13,3,0,31:LOCATE 1,25:PRINT "Maximo";maximo;
670 LOCATE 15,25:PRINT "Puntos";puntos:LOCATE 30,25:PRINT "Pelotas";pelotas:RETURN
680 LOCATE 3,23:PRINT"Pulse barra espaciadora para empezar":RETURN
690 LOCATE 1,25:PRINT SPACE$(40);:RETURN

Bombardero

Este listado basic es una variación sobre un tema clásico, para un jugador contra el ordenador. Control por teclado. Listados Basic por Dave Town.

10 'BOMBARDERO por DAVE TOWN
20 'copyright (c) AMSOFT 1984
30 '
40 MODE 1:CLS:INK 0,0:BORDER 0:INK 1,18:INK 2,6:INK 3,4:INK 5,15:INK 6,2:INK 7,24:INK 8,8:INK 9,26:INK 10,10:INK 11,20:INK 12,12:INK 13,16:INK 14,14:INK 15,21
50 SYMBOL AFTER 240:SYMBOL 241,&40,&60,&70,&7F,&7F,&EF,&7,&0:SYMBOL 242,&0,&32,&7A,&FE,&FA,&F2,&E0,&0
60 puntos=0:maxi=0:avi$=CHR$(241)+CHR$(242):x=2:y=2:cae=0:a=2:b=2
70 GOSUB 480
80 CLS
90 PEN 2:LOCATE 1,15:INPUT"Elija nivel: 0 (AS) a 5 (PRINCIPIANTE) ",nivel
100 IF nivel<0 OR nivel>5 THEN GOTO 90
110 nivel=nivel+10
120 LOCATE 1,15:PRINT CHR$(18);:LOCATE 1,15:INPUT"Elija velocidad: 0 (MAX) a 100(MIN) ",vel
130 IF vel>100 OR vel<0 GOTO 120
140 '
150 'Edificios
160 '
170 MODE 0:FOR base=5 TO 15:FOR altura=21 TO INT(RND(1)*8+nivel) STEP-1:LOCATE base,altura:PEN base-2:PRINT CHR$(143)+CHR$(8)+CHR$(11)+CHR$(244);:NEXT:NEXT
180 PLOT 0,20,4:DRAW 640,20,4
190 LOCATE 1,25:PEN 2:PRINT"PUNTOS";puntos;:LOCATE 13,25:PRINT"MAX";maxi;
200 '
210 'Juego
220 '
230 LOCATE x-1,y:PRINT" ";
240 PEN 1:LOCATE x,y:PRINT avi$;:PEN 2
250 IF y=21 AND x=15 THEN GOTO 290:ELSE GOTO 340
260 '
270 'Aterriza
280 '
290 FOR c=0 TO 1000:NEXT
300 puntos=puntos+100-(nivel*2):nivel=nivel-1:x=2:y=2:a=2:b=2:cae=0
310 IF nivel<10 THEN nivel=10:vel=vel-20
320 IF vel<0 THEN vel=0
330 GOTO 150
340 FOR c=0 TO vel:NEXT
350 x=x+1
360 IF x=18 THEN LOCATE x-1,y:PRINT CHR$(18);:x=2:y=y+1:LOCATE x,y:PEN 1:PRINT avi$;:PEN 2
370 a$=INKEY$:IF a$=" " AND cae=0 THEN cae=1:b=y+2:a=x
380 IF y=21 THEN cae=0
390 IF cae=1 THEN LOCATE a,b:PRINT CHR$(252);:LOCATE a,b-1:PRINT" ";:b=b+1:IF b>21 THEN LOCATE a,b:PRINT" ";:LOCATE a,b-1:PRINT" ";:LOCATE a,b-1:PRINT" ":a=0:b=0:cae=0:SOUND 3,4000,10,12,0,0,10
400 ga=(a-0.5)*32:gb=400-(b*16):bomba=TEST(ga,gb)
410 IF bomba>0 THEN GOTO 670
420 gx=((x+1.5)*32):gy=408-(y*16):choque=TEST(gx,gy)
430 IF choque>0 THEN GOTO 570
440 GOTO 230
450 '
460 'Instrucciones
470
480 LOCATE 1,2:PEN 1:PRINT"Usted esta pilotando un avion sobre una ciudad desierta y tiene que pasar sobre los edificios para aterrizar y repostar.Su avion se mueve de izquierda a derecha.";:PRINT
490 PRINT:PRINT"Al llegar a la derecha, el avion vuelve a salir por la izquierda, pero MAS BAJO.Dispone de un numero limitado de bombas y puede hacerlas caer sobre los edifici-cios pulsando la BARRA ESPACIADORA.";:PRINT
500 PRINT:PRINT"Cada vez que aterriza, sube la alturade los edificios y la velocidad.";:PRINT:PRINT:PRINT"UNA VEZ DISPARADA UNA BOMBA,YA NO PUEDE DISPARAR OTRAMIENTRAS NO HAYA EXPLOSIO-NADO LA PRIMERA!!!":
510 PEN 2:LOCATE 1,24:PRINT:PRINT"Pulse una tecla para empezar.";
520 a$=INKEY$:IF a$="" GOTO 520
530 RETURN
540 '
550 'Colision
560 '
570 LOCATE x-1,y:PRINT CHR$(32)+CHR$(32)+CHR$(32)+CHR$(253)+CHR$(8)+CHR$(238)+CHR$(8);
580 FOR t=1 TO 10:SOUND 7,4000,5,15,0,0,5:PEN t:PRINT CHR$(253)+CHR$(8)+CHR$(238)+CHR$(8)+CHR$(32)+CHR$(8);:FOR tm=0 TO 50:NEXT:NEXT:PEN 2
590 CLS:LOCATE 1,5:PRINT"Ha conseguido";puntos;"puntos."
600 IF puntos>maxi THEN maxi=puntos:LOCATE 1,8:PRINT"BATIO EL RECORD!!";
610 puntos=0:LOCATE 1,12:PRINT"Pulse V para volver a empezar";
620 a$=INKEY$:IF a$="v" OR a$="V" GOTO 630 ELSE GOTO 620
630 PEN 1:MODE 1:x=2:y=2:a=2:b=2:GOTO 90
640 '
650 'Edificio bombardeado
660 '
670 LOCATE a,b-1:PRINT" "+CHR$(8);:PEN 4:FOR tr=1 TO INT(RND(1)*3)+1:puntos=puntos+ 5:SOUND 3,4000,10,12,0,0,10:LOCATE a,b:FOR t=0 TO 4:PRINT CHR$(253)+CHR$(8)+CHR$(32)+CHR$(8);:NEXT:b=b+1
680 IF b=24 THEN b=b-1
690 NEXT
700 LOCATE 7,25:PEN 2:PRINT puntos;:cae=0:a=x:b=y:PEN 4:GOTO 230
                                

Por favor, acepta las cookies de YouTube para poder ver este video. Aceptando, accederás al contenido de YouTube, un servicio externo y gestionado por terceros.

Leer la privacidad de Youtube.

Aceptando este aviso, tu selección será guardara y la página se refrescará.

¿Necesitas un soporte masivo para tu Amstrad CPC?

Tele Tenis

Posiblemente este juego es el más versionado de todos los tiempos. Todas las videoconsolas y ordenadores tenían su versión de tenis disponible, y es que era un juego muy divertido y lo sigue siendo. Para dos jugadores, o para uno contra el ordenador. Puede controlarse por Teclado o joystick(s).

El autor del listado de Tele Tenis es David Radisic. Posiblemente este sea uno de los listados Basic que casi todos tecleamos en su momento.

10 ' TELE TENIS, por David Radisic
20 ' copyright (c) AMSOFT 1985
30 '
40 DEFINT a-z
50 comp=1
60 ENV 1,=11,20,=9,5000
70 MODE 1:INK 0,10:BORDER 10:INK 1,26:INK 2,18:INK 3,0
80 GOSUB 710
90 GOSUB 150
100 GOSUB 330
110 GOSUB 420
120 LOCATE 13,1:PRINT USING"#### ";puntos1;
130 LOCATE 35,1:PRINT USING"#### ";puntos2;
140 GOTO 100
150 PEN 2
160 x(1)=3:y(1)=5
170 x(2)=37:y(2)=22
180 borde$=CHR$(233):borde2$=STRING$(2,207)
190 LOCATE 1,3:PRINT STRING$(39,borde$):PRINT STRING$(39, borde$)
200 FOR i=1 TO 19
210 PRINT borde2$;TAB(38);borde2$
220 NEXT
230 PRINT STRING$(39,borde$):PRINT STRING$(39,borde$);
240 WINDOW #1,3,37,5,23
250 CLS#1
260 SYMBOL 240,0,60,126,126,126,126,60,0
270 raq$="|"+CHR$(8)+CHR$(10)+"|"
280 bor$=" "+CHR$(8)+CHR$(10)+" "
290 pel$=CHR$(240)
300 PEN 3
310 LOCATE 2,1:PRINT"Jugador 1:0";:LOCATE 24,1:PRINT"Jugador 2:0"
320 RETURN
330 n=INT(RND*2):CLS#1:punto=0
340 PEN 3
350 FOR i=1 TO 2:LOCATE x(i),y(i):PRINT raq$;:NEXT
360 ON n GOTO 390
370 xb=21:dx=1
380 GOTO 400
390 xb=19:dx=-1
400 yb=12:dy=INT(RND*3)-1
410 RETURN
420 GOSUB 600
430 oxb=xb:oyb=yb
440 GOSUB 500
450 IF nota>0 THEN SOUND 129,nota,50,15,1
460 LOCATE oxb,oyb:PRINT" ";
470 LOCATE xb,yb:PRINT pel$
480 IF punto=0 THEN 420
490 RETURN
500 LOCATE xb+dx,yb+dy:ch$=COPYCHR$(#0)
510 nota=0
520 IF ch$=" " THEN xb=xb+dx:yb=yb+dy:RETURN
530 IF ch$="|" THEN dx=2-dx-2:dy=INT(RND*3)-1:nota=200:RETURN
540 IF ch$=LEFT$(borde2$,1) THEN 570
550 IF ch$=borde$ THEN dy=2-dy-2:nota=250
560 RETURN
570 IF dx>0 THEN puntosl=puntosl+1 ELSE puntos2=puntos2+1
580 punto=1:nota=2000
590 RETURN
600 p(1)=(INKEY(69)>=0)+(INKEY(72)>=0)+ABS((INKEY(71)>=0) +(INKEY(73)>=0))*2
610 IF comp=1 THEN p(2)=ABS(y(2)<yb)*2+(y(2)>yb):GOTO 630
620 p(2)=(INKEY(4)>=0)+(INKEY(48)>=0)+ABS((INKEY(5)>=0)+( INKEY(49)>=0))*2
630 PEN 3
640 FOR i=1 TO 2
650 LOCATE x(i),y(i)+p(i):ch$=COPYCHR$(#0)
660 IF ch$=" " THEN LOCATE x(i),y(i):PRINT bor$;:y(i)=y(i)+ROUND(p(i)/2)
670 LOCATE x(i),y(i):PRINT raq$;
680 NEXT
690 PEN 1
700 RETURN
710 PEN 2:PRINT:PRINT TAB(15)"Ping-Pong":PRINT TAB(15)"---------"
720 PEN 3:PRINT:PRINT TAB(10)"Para mover raquetas: "
730 PRINT:PRINT:PEN 1
740 PRINT" Jugador 1 Jugador 2 Direccion":PRINT
750 PRINT" A 6 ARRIBA"
760 PRINT" Z 3 ABAJO":PRINT
770 PEN 3:PRINT:PRINT TAB(14)"o con joysticks"
780 PRINT:PRINT:PRINT:PRINT
790 PEN 2
800 PRINT TAB(7)"Elija <1> o <2> jugadores"
810 i$=INKEY$:IF i$<>"1" AND i$<>"2" THEN 810
820 IF i$="1" THEN comp=1 ELSE comp=0
830 MODE 1:RETURN

Esgrima eléctrico

En este sencillo juego de lucha, cuyo autor es Alexander Martin, debes tratar de lograr impactar al contrincante. Resulta bastante curioso el que además incluyera en el mismo una pequeña presentación. El modo de juego es para dos jugadores y se puede controlar con teclado o joysticks.

10 ' ESGRIMA ELECTRICO, por Alexander Martin
20 ' copyright (c) AMSOFT 1985
30 '
40 DEFINT a-z
50 MODE 0
60 GOSUB 980
70 GOSUB 1370
80 GOSUB 270
90 GOSUB 1520
100 GOSUB 1370
110 GOSUB 1270
120 '
130 '
140 REM empezar
150 IF termina THEN GOTO 100
160 GOSUB 240
170 FRAME:IF p1dir THEN GOSUB 570 ELSE FRAME:FRAME
180 FRAME:IF p2dir THEN GOSUB 620 ELSE FRAME:FRAME
190 IF p1sa=-1 THEN GOSUB 670
200 IF p2sa=-1 THEN GOSUB 720
210 GOTO 140
220 '
230 '
240 IF j THEN 380 ELSE 480
250 '
260 '
270 CLS:PEN 6
280 PRINT:PRINT" ELIJA CONTROL"
290 PRINT:PRINT:PRINT:PRINT" pulse J/T [ENTER]"
300 LOCATE 4,10:PRINT"JOYSTICKS";TAB(4);"O TECLAS"
310 LOCATE 12,10:IF j THEN PRINT"*":ELSE PRINT" "
320 LOCATE 12,11:IF j THEN PRINT" ":ELSE PRINT"*"
330 IF NOT(INKEY(45)) THEN j=-1
340 IF NOT(INKEY(51)) THEN j=0: '37 en original: K
350 IF NOT(INKEY(18)) THEN RETURN ELSE 310
360 '
370 '
380 p1=JOY(0):p2=JOY(1)
390 p1dir=(p1 AND 1)*-1+(p1 AND 2)*0.5
400 p2dir=(p2 AND 1)*-1+(p2 AND 2)*0.5
410 IF p1 AND 16 THEN p1sa=p1sa-1:IF p1sa=-1 THEN AFTER 15 GOSUB 770
420 IF p2 AND 16 THEN p2sa=p2sa-1:IF p2sa=-1 THEN AFTER 15 GOSUB 770
430 IF p1sa THEN p1dir=0
440 IF p2sa THEN p2dir=0
450 RETURN
460 '
470 '
480 p2dir=((INKEY(4)=0)*1)+((INKEY(5)=0)*-1)
490 p1dir=((INKEY(69)=0)*1)+((INKEY(71)=0)*-1)
500 IF INKEY(63)=0 THEN p1sa=p1sa-1:IF p1sa=-1 THEN AFTER 15 GOSUB 770
510 IF INKEY(10)=0 THEN p2sa=p2sa-1:IF p2sa=-1 THEN AFTER 15 GOSUB 770
520 IF p1sa THEN p1dir=0
530 IF p2sa THEN p2dir=0
540 RETURN
550 '
560 '
570 pt=p1wp+p1dir:IF pt>25 OR pt<6 THEN RETURN ELSE p1wp=pt
580 p1dir=0
590 PEN 1:LOCATE 3,p1wp:CLS#3:PRINT CHR$(209);:RETURN
600 '
610 '
620 pt=p2wp+p2di•:IF pt>25 OR pt<6 THEN RETURN ELSE p2wp=pt
630 p2dir=0
640 PEN 2:LOCATE 18,p2wp:CLS#5:PRINT CHR$(211);:RETURN
650 '
660 '
670 PAPER #4,4:WINDOW #4,4,17,p1wp,p1wp:CLS#4:FRAME:FRAME
680 PAPER #4,0:CLS#4
690 GOTO 570
700 '
710 '
720 PAPER #6,5:WINDOW #6,4,17,p2wp,p2wp:CLS#6:FRAME:FRAME
730 PAPER #6,0:CLS#6
740 GOTO 620
750 '
760 '
770 pwpe=(p1wp=p2wp):IF p1sa AND NOT(p2sa) AND pwpe THEN p1sc=p1sc+1:SOUND 132,120,10,0,1,0:PRINT#1,a$(p1sc);:IF p1sc=9 THEN 860
780 IF p2sa AND NOT(p1sa) AND pwpe THEN p2sc=p2sc+1:SOUND 132,100,10,0,1,0:PRINT#2,a$(p2sc);:IF p2sc=9 THEN 860
790 IF p1sa THEN SOUND 132,40,70,0,1,1
800 IF p2sa THEN SOUND 132,56,70,0,1,1
810 p1sa=0
820 p2sa=0
830 RETURN
840 '
850 '
860 PEN 6
870 LOCATE 2,10:PRINT"FIN DE LA PARTIDA"
880 IF p1sc=9 THEN INK 1,2,20:INK 2,0 ELSE INK 2,6,17:INK 1,0
890 SOUND 129,1000,0,12,3:SOUND 130,900,0,12,3
900 WHILE INKEY$<>"":WEND
910 t!=TIME:WHILE t!+2000>TIME:WEND
920 WHILE INKEY$="":WEND
930 CLS
940 termina=-1
950 RETURN
960 ' 970 '
980 a$(0)="111101101101111"
990 a$(1)="001001001001001"
1000 a$(2)="111001111100111"
1010 a$(3)="111001111001111"
1020 a$(4)="100100101111001"
1030 a$(5)="111100111001111"
1040 a$(6)="111100111101111"
1050 a$(7)="111001001010010"
1060 a$(8)="111101111101111"
1070 a$(9)="111101111001001"
1080 FOR n=0 TO 9
1090 tiempo=LEN(a$(n))
1100 FOR n2=1 TO tiempo
1110 IF MID$(a$(n),n2,1)="1"THEN MID$(a$(n),n2,1)=CHR$(143) ELSE MID$(a$(n),n2,1)=CHR$(32)
1120 NEXT n2,n
1130 '
1140 '
1150 b$="ESGRIMA ELECTRICO"
1160 c$=CHR$(32)+CHR$(164)+" Alexander Martin"
1170 ENV 1,=9,2000:ENT -1,6,3,1
1180 ENV 2,127,0,0,127,0,0,127,0,0,127,0,0,127,0,0
1190 ENV 3,=9,9000
1200 '
1210 '
1220 BORDER 0
1230 INK 0,12:PEN #4,1:PEN #6,2:PEN #1,1:PEN #2,2:PAPER #1,3:PAPER #2,3:PEN #0,6
1240 RETURN 'de preparar constantes
1250 '
1260 '
1270 INK 0,12:INK 1,2:INK 2,6:INK 3,13:INK 4,20:INK 5,17:INK 6,20
1280 WINDOW #3,3,3,6,25:WINDOW #5,18,18,6,25
1290 WINDOW #1,3,5,1,5:WINDOW #2,16,18,1,5:WINDOW #7,1,20 ,1,5:PAPER #7,3
1300 CLS:CLS#7:PRINT#1,a$(0);:PRINT#2,a$(0);:p1sc=0:p2sc=0:p1wp=5:p2wp=24:p1dir=1:p2dir=1
1310 GOSUB 570:GOSUB 620
1320 SOUND 1,1000,0,12,2:SOUND 2,900,0,12,2
1330 p1sa=0:p2sa=0:termina=0
1340 RETURN
1350 '
1360 '
1370 CLS
1380 PEN 7
1390 FOR n=1 TO LEN(b$)
1400 LOCATE 1+n,10
1410 FOR n2=LEN(b$) TO n STEP-1
1420 PRINT MID$(b$,n2,1)
1430 LOCATE 1+n,10
1440 SOUND 135,20*n2,5,12,2,1
1450 NEXT n2,n
1460 SOUND 135,100,0,13,3,1,20
1470 PEN 6:PRINT:PRINT:PRINT:PRINT c$
1480 FOR n=1 TO 5000:NEXT
1490 RETURN
1500 '
1510 '
1520 IF j THEN RETURN
1530 CLS
1540 LOCATE 6,5
1550 PRINT"CONTROLES"
1560 PRINT
1570 PRINT"JUGADOR 1 JUGADOR 2"
1580 PRINT
1590 PRINT" A arriba 6"
1600 PRINT" Z abajo 3"
1610 PRINT" X disparo 9"
1620 t!=TIME:WHILE t!+1000>TIME:WEND
1630 RETURN

Amthello

listados-basic
Amstrad cpc 664

Amthello es un juego de reflexión donde tienes que tratar de rodear y capturar los cuadrados de tu oponente sin dejar los tuyos al descubierto. El juego es para un jugador contra el ordenador y únicamente se controla con teclado. Los listados Basic son obra de M. J. Gribbins.

10 'AMTHELLO, por M. J. Gribbins
20 'copyright (c) AMSOFT 1984
30 '
40 BORDER 14
50 CLEAR
60 MODE 1:PEN 0:PAPER 1:CLS
70 INK 0,0:INK 1,14:INK 2,18:INK 3,26
80 LOCATE 2,3:PEN 3:PRINT"A":LOCATE 3,4:PRINT"M":LOCATE 4 ,5:PRINT"T":LOCATE 5,6:PRINT"H"
90 LOCATE 6,7:PRINT"E":LOCATE 7,8:PRINT"L":LOCATE 8,9:PRINT"L":LOCATE 9,10:PRINT"O"
100 WINDOW #1,2,39,22,25:PAPER #1,1:PEN #1,0:CLS#1
110 PEN 0
120 LOCATE #1,5,1:PRINT#1,"LAS NEGRAS SIEMPRE EMPIEZAN"
130 LOCATE #1,4,3:PRINT#1,"ELIJA BLANCAS [B] O NEGRAS [N]"
140 b$=INKEY$:IF b$="" THEN 140
150 IF b$="B" OR b$="b" THEN q%%=3:n%%=0:GOTO 210
160 IF b$="N" OR b$="n" THEN q%%=0:n%%=3:GOTO 210
170 CLS#1:LOCATE #1,4,3
180 PRINT#1," SOLO BLANCAS O NEGRAS"
190 FOR t=0 TO 1000:NEXT t
200 GOTO 140
210 DIM c%%(10,10),p%%(9,9),c1%%(8),c2%%(8),cx%%(9),cy%%(9)
220 i1%%=2:j1%%=2:i2%%=7:j2%%=7
230 FOR i%%=0 TO 9
240 c%%(i%%,o%%)=6:c%%(0,i%%)=6
250 c%%(9,i%%)=6:c%%(i%%,9)=6
260 NEXT i%%
270 FOR i%%=1 TO 8
280 READ c1%%(i%%),c2%%(i%%)
290 FOR j%%=1 TO 8
300 READ p%%(i%%,j%%)
310 c%%(i%%,j%%)=6
320 NEXT j%%:NEXT i%%
330 c%%(4,4)=3:c%%(4,5)=0:c%%(5,4)=0:c%%(5,5)=3
340 FOR k%%=1 TO 58
350 READ ar%%,br%%,cr%%,dr%%
360 PLOT ar%%,br%%:DRAW cr%%,dr%%,0
370 NEXT k%%
380 GOSUB 1460
390 IF q%%=3 GOTO 770
400 CLS#1:INPUT #1," ELIJA FILA ";e%%
410 IF e%%<1 OR e%%>8 GOTO 400
420 LOCATE #1,1,3:INPUT #1," ELIJA COLUMNA ";d%%
430 IF d%%<1 OR d%%>8 GOTO 420
440 IF c%%(d%%,e%%)=6 GOTO 480
450 CLS#1:LOCATE #1,5,2:PRINT#1,"ESE CUADRADO YA ESTA OCUPADO!"
460 FOR t=1 TO 1000:NEXT t
470 GOTO 400
480 PLOT 270+(30*d%%),70+(30*e%%):DRAW 290+(30*d%%),89+(30*e%%),q%%
490 PLOT 290+(30*d%%),70+(30*e%%):DRAW 270+(30*d%%),89+(30*e%%),q%%
500 GOTO 540
510 FOR m%%=0 TO 19 STEP 2:PLOT 270+(30*d%%),70+m%%+(30*e%%)
520 DRAW 290+(30*d%%),70+m%%+(30*e%%),6:NEXT m%%
530 GOTO 400
540 vrx%%=0
550 FOR k%%=1 TO 8
560 vr%%=0:c3%%=d%%:c4%%=e%%
570 c3%%=c3%%+c1%%(k%%):c4%%=c4%%+c2%%(k%%)
580 IF c%%(c3%%,c4%%)=n%% GOTO 590 ELSE 600
590 vr%%=vr%%+1:GOTO 570
600 IF c%%(c3%%,c4%%)=6 GOTO 610 ELSE 620
610 NEXT k%%:GOTO 670
620 IF vr%%=0 GOTO 610 ELSE 630
630 vrx%%=vrx%%+vr%%
640 c3%%=c3%%-c1%%(k%%):c4%%=c4%%-c2%%(k%%)
650 IF c%%(c3%%,c4%%)=6 GOTO 610 ELSE 660
660 c%%(c3%%,c4%%)=q%%:GOTO 640
670 IF vrx%%=0 GOTO 680 ELSE 710
680 CLS#1:PRINT#1,"ESO NO ES POSIBLE"
690 FOR t=1 TO 1000:NEXT t
700 GOTO 510
710 e%%=e%%:dt=d%%:vrx%%=vrx%%
720 CLS#1:PRINT#1,"USTED VA A LA LINEA ";e%%
730 PRINT#1," Y A LA COLUMNA ";d%%
740 LOCATE #1,2,4:PRINT#1,"CON LO QUE CONSIGUE ";vrx%%;" CUADRADO(S)"
750 c%%(d%%,e%%)=q%%:GOSUB 1710
760 GOSUB 1460
770 CLS#1:LOCATE #1,10,2:PRINT#1,"AHORA ME TOCA A MI ..."
780 p%%=0:vrx%%=0:vry%%=0
790 IF i1%%*j1%%=1 AND i2%%*j2%%=64 GOTO 860
800 FOR k%%=2 TO 7
810 IF c%%(2,k%%)<>6 THEN i1%%=1
820 IF c%%(7,k%%)<>6 THEN i2%%=8
830 IF c%%(k%%,2)<>6 THEN j1%%=1
840 IF c%%(k%%,7)<>6 THEN j2%%=8
850 NEXT k%%
860 FOR i%%=i1%% TO i2%%
870 FOR j%%=j1%% TO j2%%
880 IF c%%(i%%,j%%)=6 GOTO 1030
890 NEXT j%%:NEXT i%%
900 IF p%%>0 THEN 1000
910 IF pas%%=1 GOTO 920 ELSE 940
920 CLS#1:PRINT#1,"BLOQUEADO! YO TAMBIEN TENGO QUE PASAR. FIN DE LA PARTIDA"
930 FOR t=1 TO 1000:NEXT t:GOTO 1550
940 CLS#1:LOCATE #1,18,2:PRINT#1,"TENGO QUE PASAR"
950 GOSUB 2720
960 IF pas%%=1 GOTO 970 ELSE 990
970 CLS#1:PRINT#1,"BLOQUEADO! USTED TAMBIEN TIENE QUE PASAR. FIN DE LA PARTIDA."
975 RETURN
980 FOR t=1 TO 1000:NEXT t:GOTO 1550
990 GOTO 400
1000 IF lc%%=0 THEN lc%%=1:RANDOMIZE lc%%:r1%%=RND(lc%%)
1010 cx1%%=cx%%(r1%%):cx2%%=cy%%(r1%%)
1020 GOTO 1220
1030 vrx%%=0
1040 FOR k%%=1 TO 8
1050 vr%%=0:c3%%=i%%:c4%%=j%%
1060 c3%%=c3%%+c1%%(k%%):c4%%=c4%%+c2%%(k%%)
1070 IF c%%(c3%%,c4%%)=q%% GOTO 1080 ELSE 1090
1080 vr%%=vr%%+1:GOTO 1060
1090 IF c%%(c3%%,c4%%)=6 GOTO 1100 ELSE 1110
1100 NEXT k%%:GOTO 1130
1110 IF vr%%=o%% GOTO 1100 ELSE 1120
1120 vrx%%=vrx%%+vr%%:GOTO 1100
1130 IF vrx%%=0 GOTO 890
1140 IF p%%(i%%,j%%) < p%% GOTO 890
1150 IF p%%(i%%,j%%) > p%% GOTO 1160 ELSE 1170
1160 p%%=p%%(i%%,j%%):vry%%=vrx%%:lc%%=0:cx%%(0)=i%%:cy%%(0)=j%%:GOTO 890
1170 IF vry%%>vrx%% GOTO 890
1180 IF vry%%<vrx%% GOTO 1190 ELSE 1200
1190 lc%%=0:vry%%=vrx%%:cx%%(0)=i%%:cy%%(0)=j%%:GOTO 890
1200 lc%%=lc%%+1:cx%%(lc%%)=114:cy%%(lc%%)=j%%
1210 GOTO 890
1220 cx2%%=cx2%%:cx1%%=cx1%%:vry%%=vry%%
1230 CLS#1:PRINT#1,"YO VOY A LA FILA ";cx2%%
1240 PRINT#1," Y A LA COLUMNA ";cx1%%
1250 LOCATE #1,1,4:PRINT#1,"CON LO QUE CONSIGO ";vry%%;" CUADRADO(S)"
1260 PLOT 270+(30*cx1%%),70+(30*cx2%%):DRAW 290+(30*cx1%%),89+(30*cx2%%),n%%
1270 PLOT 290+(30*cx1%%),70+(30*cx2%%):DRAW 270+(30*cx1%%),89+(30*cx2%%),n%%
1280 FOR t=1 TO 1000:NEXT t
1290 FOR k%%=1 TO 8
1300 vr%%=0:c3%%=cx1%%:c4%%=cx2%%
1310 c3%%=c3%%+c1%%(k%%):c4%%=c4%%+c2%%(k%%)
1320 IF c%%(c3%%,c4%%)=q%% GOTO 1330 ELSE 1340
1330 vr%%=vr%%+1:GOTO 1310
1340 IF c%%(c3%%,c4%%)=6 GOTO 1350 ELSE 1360
1350 NEXT k%%:GOTO 1400
1360 IF vr%%=0 GOTO 1350
1370 c3%%=c3%%-c1%%(k%%):c4%%=c4%%-c2%%(k%%)
1380 IF c%%(c3%%,c4%%)=6 GOTO 1350
1390 c%%(c3%%,c4%%)=n%%:GOTO 1370
1400 c%%(cx1%%,cx2%%)=n%%
1410 GOSUB 2720
1420 GOSUB 1460
1430 IF pas%%=1 GOTO 1440 ELSE 1450
1440 CLS#1:PRINT#1," USTED TIENE QUE PASAR":FOR t=1 TO 1000:NEXT t:GOTO 770
1450 GOTO 400
1460 FOR i%%=1 TO 8
1470 FOR j%%=1 TO 8
1480 FOR m%%=1 TO 19 STEP 2
1490 z%%=270+(30*i%%):h%%=70+(30*j%%):w%%=h%%+m%%
1500 PLOT z%%,w%%:DRAW z%%+20,w%%,c%%(i%%,j%%)
1510 NEXT m%%:NEXT j%%:NEXT i%%
1520 x%%=x%%+1
1530 IF x%%=61 GOTO 1550
1540 RETURN
1550 cq%%=0:cn%%=0
1560 FOR i%%=1 TO 8
1570 FOR j%%=1 TO 8
1580 IF c%%(i%%,j%%)=q%% THEN cq%%=cq%%+1
1590 IF c%%(i%%,j%%)=n%% THEN cn%%=cn%%+1
1600 NEXT j%%:NEXT i%%
1610 IF cq%%>cn%% GOTO 1680
1620 IF cq%%=cn%% GOTO 1630 ELSE 1650
1630 CLS#1:LOCATE #1,25,2:PRINT#1,"BLOQUEADO"
1640 END
1650 CLS#1:LOCATE #1,5,1:PRINT#1,"USTED TIENE ";cq%%;" CUADRADOS. YO TENGO ";cn%%
1660 LOCATE #1,11,3:PRINT#1,"YO HE GANADO ... !!!"
1670 END
1680 CLS#1:LOCATE #1,5,1:PRINT#1,"USTED TIENE ";cq%%;" CUADRADOS. YO TENGO ";cn%%
1690 LOCATE #1,5,3:PRINT#1,"MUY BIEN. USTED HA GANADO ...!!!"
1700 END
1710 IF c%%(2,2)=q%% AND (c%%(3,1)=n%% OR c%%(1,3)=n%%) GOTO 1720 ELSE 1730
1720 p%%(3,1)=1:p%%(1,3)=1
1730 IF c%%(7,7)=q%% AND (c%%(8,6)=n%% OR c%%(6,8)=n%%) GOTO 1740 ELSE 1750
1740 p%%(8,6)=1:p%%(6,8)=1
1750 IF c%%(2,7)=q%% AND (c%%(1,6)=n%% OR c%%(3,8)=n%%) GOTO 1760 ELSE 1770
1760 p%%(1,6)=1:p%%(3,8)=1
1770 IF c%%(7,2)=q%% AND (c%%(6,1)=n%% OR c%%(8,3)=n%%) GOTO 1780 ELSE 1790
1780 p%%(6,1)=1:p%%(8,3)=1
1790 IF d%%=1 OR d%%=8 OR e%%=1 OR e%%=8 GOTO 1820
1800 IF cx1%%=1 OR cx1%%=8 OR cx2%%=1 OR cx2%%=8 GOTO 1820
1810 RETURN
1820 FOR j%%=1 TO 8 STEP 7
1830 FOR i%%=2 TO 7
1840 IF c%%(i%%,j%%)=n%% GOTO 1850 ELSE 1860
1850 p%%(i%%+1,j%%)=21:p%%(i%%-1,j%%)=21
1860 IF c%%(j%%,i%%)=n%% GOTO 1870 ELSE 1880
1870 p%%(j%%,i%%+1)=21:p%%(j%%,i%%-1)=21
1880 NEXT i%%
1890 FOR i%%=2 TO 7
1900 IF c%%(i%%,j%%)=q%% GOTO 1910 ELSE 1920
1910 p%%(i%%+1,j%%)=2:p%%(i%%-1,j%%)=2
1920 IF c%%(j%%,i%%)=q%% GOTO 1930 ELSE 1940
1930 p%%(j%%,i%%+1)=2:p%%(j%%,i%%-1)=2
1940 NEXT i%%:NEXT j%%
1950 p%%(1,2)=1:p%%(1,7)=1:p%%(2,1)=1:p%%(7,1)=1
1960 p%%(2,8)=1:p%%(7,8)=1:p%%(8,2)=1:p%%(8,7)=1
1970 FOR i%%=2 TO 7
1980 IF c%%(1,i%%-1)=q%% AND c%%(1,i%%+1)=q%% THEN p%%(1,i%%)=25
1990 IF c%%(8,i%%-1)=q%% AND c%%(8,i%%+1)=q%% THEN p%%(8,i%%)=25
2000 IF c%%(i%%-1,1)=q%% AND c%%(i%%+1,1)=q%% THEN p%%(i%%,1)=25
2010 IF c%%(i%%-1,8)=q%% AND c%%(i%%+1,8)=q%% THEN p%%(i%%,8)=25
2020 NEXT i%%
2030 FOR j%%=1 TO 8 STEP 7
2040 FOR i%%=4 TO 8
2050 IF c%%(j%%,i%%)<>n%% GOTO 2140
2060 ic%%=1%%-1:IF c%%(j%%,ic%%)=6 GOTO 2140
2070 IF c%%(j%%,ic%%)=q%% GOTO 2080 ELSE 2090
2080 ic%%=ic%%-l:GOTO 2070
2090 IF c%%(j%%,ic%%)=6 GOTO 2110
2100 GOTO 2140
2110 IF ic%%=0 GOTO 2140
2120 IF c%%(j%%,i%%+1)=q%% AND c%%(j%%,ic%%-1)=6 GOTO 2140
2130 p%%(j%%,ic%%)=26
2140 IF c%%(i%%,j%%)<>n%% GOTO 2230
2150 ic%%=1%%-1:IF c%%(ic%%,j%%)=6 GOTO 2230
2160 IF c%%(ic%%,j%%)=q%% GOTO 2170 ELSE 2180
2170 ic%%=ic%%-l:GOTO 2160
2180 IF c%%(ic%%,j%%)=6 GOTO 2200
2190 GOTO 2230
2200 IF ic%%=0 GOTO 2230
2210 IF c%%(i%%+1,j%%)=q%% AND c%%(ic%%-1,j%%)=6 GOTO 2230
2220 p%%(ic%%,j%%)=26
2230 NEXT i%%
2240 FOR i%%=1 TO 5
2250 IF c%%(j%%,i%%)<>n%% GOTO 2340
2260 ic%%=i%%+1:IF c%%(j%%,ic%%)=6 GOTO 2340
2270 IF c%%(j%%,ic%%)=q%% GOTO 2280 ELSE 2290
2280 ic%%=ic%%+1:GOTO 2270
2290 IF c%%(j%%,ic%%)=6 GOTO 2310
2300 GOTO 2340
2310 IF ic%%=9 GOTO 2340
2320 IF c%%(j%%,i%%-1)=q%% AND c%%(j%%,ic%%+1)=6 GOTO 2340
2330 p%%(j%%,ic%%)=26
2340 IF c%%(i%%,j%%)<>n%% GOTO 2430
2350 ic%%=i%%+1:IF c%%(ic%%,j%%)=6 GOTO 2430
2360 IF c%%(ic%%,j%%)=q%% GOTO 2370 ELSE 2380
2370 ic%%=ic%%+1:GOTO 2360
2380 IF c%%(ic%%,j%%)=6 GOTO 2400
2390 GOTO 2430
2400 IF ic%%=9 GOTO 2430
2410 IF c%%(i%%-1,j%%)=q%% AND c%%(ic%%+1,j%%)=6 GOTO 2430
2420 p%%(ic%%,j%%)=26
2430 NEXT i%%:NEXT j%%
2440 IF c%%(1,1)=n%% GOTO 2450 ELSE 2460
2450 FOR i%%=2 TO 6:p%%(1,i%%)=20:p%%(i%%,1)=20:NEXT i%%
2460 IF c%%(1,8)=n%% GOTO 2470 ELSE 2480
2470 FOR i%%=2 TO 6:p%%(i%%,8)=20:p%%(1,9-i%%)=20:NEXT i%%
2480 IF c%%(8,1)=n%% GOTO 2490 ELSE 2500
2490 FOR i%%=2 TO 6:p%%(9-i%%,1)=20:p%%(8,i%%)=20:NEXT i%%
2500 IF c%%(8,8)=n%% GOTO 2510 ELSE 2520
2510 FOR i%%=3 TO 7:p%%(i%%,8)=20:p%%(8,i%%)=20:NEXT i%%
2520 IF c%%(1,1)<>6 THEN p%%(2,2)=5
2530 IF c%%(1,8)<>6 THEN p%%(2,7)=5
2540 IF c%%(8,1).06 THEN p%%(7,2)=5
2550 IF c%%(8,8)0,6 THEN p%%(7,7)=5
2560 p%%(1,1)=30:p%%(1,8)=30:p%%(8,1)=30:p%%(8,8)=30
2570 FOR i%%=3 TO 6
2580 IF c%%(1,i%%)=n%% THEN p%%(2,i%%)=4
2590 IF c%%(8,i%%)=n%% THEN p%%(7,i%%)=4
2600 IF c%%(i%%,1)=n%% THEN p%%(i%%,2)=4
2610 IF c%%(i%%,8)=n%% THEN p%%(i%%,7)=4
2620 NEXT i%%
2630 IF c%%(7,1)=q%% AND c%%(4,1)=n%% AND c%%(6,1)=6 AND c%%(5,1)=6 THEN p%%(6,1)=26
2640 IF c%%(1,7)=q%% AND c%%(1,4)=n%% AND c%%(1,6)=6 AND c%%(1,5)=6 THEN p%%(1,6)=26
2650 IF c%%(2,1)=q%% AND c%%(5,1)=n%% AND c%%(3,1)=6 AND c%%(4,1)=6 THEN p%%(3,1)=26
2660 IF c%%(1,2)=q%% AND c%%(1,5)=n%% AND c%%(1,3)=6 AND c%%(1,4)=6 THEN p%%(1,3)=26
2670 IF c%%(8,2)=q%% AND c%%(8,5)=n%% AND c%%(8,3)=6 AND c%%(8,4)=6 THEN p%%(8,3)=26
2680 IF c%%(2,8)=q%% AND c%%(5,8)=n%% AND c%%(3,8)=6 AND c%%(4,8)=6 THEN p%%(3,8)=26
2690 IF c%%(8,7)=q%% AND c%%(8,4)=n%% AND c%%(8,5)=6 AND c%%(8,6)=6 THEN p%%(8,6)=26
2700 IF c%%(7,8)=q%% AND c%%(4,8)=n%% AND c%%(5,8)=6 AND c%%(6,8)=6 THEN p%%(6,8)=26
2710 RETURN
2720 pas%%=0
2730 FOR i%%=1 TO 8
2740 FOR j%%=1 TO 8
2750 IF c%%(i%%,i%%)=q%% GOTO 2780
2760 NEXT j%%:NEXT i%%
2770 pas%%=1:RETURN
2780 FOR k%%=1 TO 8
2790 vr%%=0:c3%%=i%%:c4%%=j%%
2800 c3%%=c3%%+c1%%(k%%):c4%%=c4%%+c2%%(k%%)
2810 IF c3%%<1 OR c3%%>8 GOTO 2820 ELSE 2830
2820 NEXT k%%:GOTO 2760
2830 IF c4%%<1 OR c4%%>8 GOTO 2820 ELSE 2840
2840 IF c%%(c3%%,c4%%)=n%% GOTO 2850 ELSE 2860
2850 vr%%=vr%%+1:GOTO 2800
2860 IF c%%(c3%%,c4%%)=q%% GOTO 2820 ELSE 2870
2870 IF vr%%>0 THEN RETURN
2880 GOTO 2820
2890 DATA 1,0,30,1,20,10,10,20,1,30,1,1,1,1,3
2900 DATA 3,3,3,1,1,0,1,20,3,5,5,5,5,3,20,-1,1,10,3,5
2910 DATA 0,0,5,3,10,-1,0,10,3,5,0,0,5,3,10,-1
2920 DATA -1,20,3,5,5,5,5,3,20,0,-1,1,1,3,3,3,3,1,1,1,-1,30,1,20,10,10,20,1,30
2930 DATA 263,100,263,120,270,130,255,130,255,130,255,140,255,140,270,140
2940 DATA 270,140,270,150,270,150,255,150,255,160,270,160,270,160,270,180
2950 DATA 270,180,255,180,270,170,255,170,270,190,270,210,270,200,255,200
2960 DATA 255,200,255,210,255,220,270,220,270,220,270,230,270,230,255,230
2970 DATA 255,230,255,240,255,240,270,240,255,250,270,250,270,250,270,260
2980 DATA 270,260,255,260,255,250,255,270,270,280,270,300,270,300,255,300
2990 DATA 255,310,255,330,255,330,270,330,270,330,270,310,270,310,255,310
3000 DATA 255,320,270,320
3010 DATA 310,355,310,375,350,355,335,355,335,355,335,365,335,365,350,365
3020 DATA 350,365,350,375,350,375,335,375,365,355,380,355,380,355,380,375
3030 DATA 380,375,365,375,380,365,365,365,410,355,410,375,410,365,395,365
3040 DATA 395,365,395,375,425,355,440,355,440,355,440,365,440,365,425,365
3050 DATA 425,365,425,375,425,375,440,375,455,375,455,355,455,355,470,355
3060 DATA 470,355,470,365,470,365,455,365,485,375,500,375,500,375,500,355
3070 DATA 515,375,515,355,515,355,530,355,530,355,530,375,530,375,515,375
3080 DATA 515,365,530,365

Por favor, acepta las cookies de YouTube para poder ver este video. Aceptando, accederás al contenido de YouTube, un servicio externo y gestionado por terceros.

Leer la privacidad de Youtube.

Aceptando este aviso, tu selección será guardara y la página se refrescará.

Canal Youtube de CAPA

Guante blanco

Llévese las joyas del señor conde. Muchos obstáculos con los que tropezar, luces que encender, y cuidado con el perro. Para un jugador contra el ordenador. Teclado o joystick.

10 'GUANTE BLANCO, por David Radisic
20 'copyright (c) AMSOFT 1985
30 '
40 MODE 0:INK 0,0:BORDER 0:INK 1,26:INK 2,15:INK 3,25
50 INK 4,14:INK 5,24,12:INK 6,0:INK 7,0:INK 8,0:PAPER #1, 7
60 retardo=200
70 DIM objx(5,20),objy(5,20),joyax(5,20),joyay(5,20)
80 GOSUB 380
90 GOSUB 720
100 pausa=200:GOSUB 340
110 IF joyas=0 THEN GOSUB 980
120 PEN 4
130 FOR i=10 TO 12
140 LOCATE 15,i:PRINT"BOTIN";
150 NEXT
160 PAPER 0:CLS#2:PAPER 8
170 GOSUB 1180
180 GOSUB 1240
190 GOSUB 1380
200 GOSUB 1520
210 IF rm=0 THEN GOSUB 1910
220 IF muerto=0 THEN 160
230 pausa=100:GOSUB 340
240 PAPER 0:CLS:PEN 1
250 LOCATE 4,3:PRINT"Quiere jugar";
260 LOCATE 5,5:PRINT"otra vez?";
270 PEN 5:LOCATE 7,7:PRINT"S/N";
280 i$=UPPER$(INKEY$):IF i$<>"S" AND i$<>"N" THEN 280
290 IF i$="N" THEN MODE 2:PEN 1:STOP
300 RUN
310 IF perro=1 THEN RETURN
320 perro=1:perrox=minx(rm):perroy=miny(rm)
330 RETURN
340 FOR bucle=1 TO pausa
350 FRAME
360 NEXT
370 RETURN
380 rm=1:xp=6:yp=4:hombre$=CHR$(224):perro=0:robado=0
390 SYMBOL 240,8,8,8,8,8,8,8,8
400 SYMBOL 241,0,0,0,0,255,0,1 .0
410 SYMBOL 242,0,0 0,0,15,8,8,8
420 SYMBOL 243,0,0,0,0,248,8,8,8
430 SYMBOL 244,8,8,8,8,248,0,0,0
440 SYMBOL 245,8,8,8,8,15,0,0,0
450 SYMBOL 246,8,12,13,14,12,12,8,8
460 SYMBOL 247,8,12,12,14,13,12,9,8
470 SYMBOL 248,8,24,88,56,24,24,8,8
480 SYMBOL 249,8,24,24,56,88,24,8,8
490 SYMBOL 250,0,0,255,129,129,129,255,0
500 SYMBOL 251,28,20,20,20,20,20,20,28
510 SYMBOL 252,0,0,255,255,255,255,255,0
520 SYMBOL 253,28,28,28,28,28,28,28,28
530 SYMBOL 255,195,165,60,126,90,60,36,24
540 ENT 1,12,-4,1
550 ENT -2,=1000,60,=3000,40
560 ENV 1,10,1,5,2,-4,1,2,-1,20
570 vent$(1)=STRING$(2,250):vent$(2)=CHR$(251)+CHR$(8)+CHR$(10)+CHR$(251)+CHR$(8)+CHR$(10)+CHR$(251)
580 puerta$(1)=STRING$(2,252): puerta$(2)=CHR$(253)+CHR$(8)+CHR$(10)+CHR$(253)+CHR$(8)+CHR$(10)+CHR$(253)
590 conm$(1,0)=CHR$(246):conm$(1,1)=CHR$(247)
600 conm$(2,0)=CHR$(248):conm$(2,1)=CHR$(249)
610 joya$=CHR$(144):obj$=CHR$(233):perro$=CHR$(255)
620 gol$=CHR$(246)+CHR$(248)+CHR$(247)+CHR$(249)+CHR$(252)+CHR$(253)+CHR$(250)+CHR$(251)+joya$+obj$+perro$
630 RESTORE 3020
640 FOR i=1 TO 5
650 READ minx(i),miny(i),maxx(i),maxy(i)
660 READ dir(i,1),dir(1,2),dir(i,3),dir(1,4)
670 NEXT
680 WINDOW #1,minx(rm)-1,maxx(rm)+1,miny(rm)-1,maxy(rm)+1
690 WINDOW #2,1,14,1,25
700 CLS#1:PAPER #0,8
710 RETURN
720 ORIGIN 50,50
730 INK 6,24,12
740 RESTORE 3070
750 GOSUB 1290
760 LOCATE 1,20
770 PEN 5:PRINT">";
780 PEN 1:PRINT"Puertas y ventanas";
790 PEN 5:PRINT"<";:PEN 1
800 LOCATE 5,21:PRINT"para escapar";
810 LOCATE 9,1:PRINT"PASE":LOCATE 10,2:PRINT CHR$(213)CHR$(212);
820 pausa=300:GOSUB 340
830 CLS:LOCATE 1,3:INK 6,0
840 PEN 1:PRINT hombre$;" Usted, el ladron":PRINT
850 PEN 2:PRINT LEFT$(puerta$(1),1);LEFT$(puerta$(2),1);"Puertas":PRINT
860 PEN 3:PRINT conm$(1,0);conm$(2,0);" Luces apagadas":PRINT
870 PEN 3:PRINT conm$(1,1);conm$(2,1);" Luces encendidas" :PRINT
880 PEN 4:PRINT LEFT$(vent$(1),1);LEFT$(vent$(2),1);" Ventanas":PRINT
890 PEN 5:PRINT joya$;" Piedras preciosas":PRINT
900 PAPER 1:PEN 0:PRINT obj$;" Obstaculos":PEN 1:PAPER 0:PRINT
910 PEN 1:PRINT perro$;" El perro"
920 PEN 5:PRINT:PRINT:PRINT
930 PRINT"Utilice joystick":PRINT"o teclas de cursor"
940 aux=REMAIN(1)
950 AFTER retardo*4,1 GOSUB 340
960 RETURN
970 '
980 'Generar joyas y obstaculos
990 '
1000 FOR hab=1 TO 5
1010 joyar=INT(RND*8)+2:objr=INT(RND*10)+5
1020 minx=minx(hab):miny=miny(hab):maxx=maxx(hab):maxy=maxy(hab)
1030 FOR i=1 TO joyar
1040 x=INT(RND*(maxx-minx+1))+minx
1050 y=INT(RND*(maxy-miny+1))+miny
1060 joyax(hab,i)=x:joyay(hab,i)=y
1070 joyas=joyas+1
1080 NEXT i
1090 FOR i=1 TO objr
1100 x=INT(RND*(maxx-minx+1))+minx
1110 y=INT(RND*(maxy-miny+1))+miny
1120 objx(hab,i)=x:objy(hab,i)=y
1130 NEXT i
1140 joyas(hab)=joyar:obj(hab)=objr
1150 NEXT hab
1160 CLS
1170 RETURN
1180 ON rm GOTO 1190,1200,1210,1220,1230
1190 RESTORE 2680:RETURN
1200 RESTORE 2750:RETURN
1210 RESTORE 2820:RETURN
1220 RESTORE 2890:RETURN
1230 RESTORE 2970:RETURN
1240 PAPER 0:READ rm$:PAPER 8
1250 WINDOW #1,minx(rm)-1,maxx(rm)+1,miny(rm)-1,maxy(rm)+1:CLS#1
1260 PEN 1:LOCATE 1,1:PRINT SPACE$(19);
1270 LOCATE 1,1:PRINT"Habitacion: ";rm$;
1280 IF luces(rm) THEN INK 7,10:INK 8,10 ELSE INK 7,0:INK 8,0
1290 READ a$:IF a$="FIN" THEN RETURN
1300 IF a$="D" THEN 2190
1310 IF a$="W" THEN 2270
1320 IF a$="L" THEN GRAPHICS PEN 1:GOTO 2350
1330 IF a$="S" THEN 2430
1340 IF a$="F" THEN GRAPHICS PEN 6:GOTO 2350
1350 PRINT"***ERROR ***";
1360 STOP
1370 '
1380 'Dibujar joyas/objetos
1390 '
1400 PEN 6
1410 FOR i=1 TO obj(rm)
1420 LOCATE objx(rm,i),objy(rm,i)
1430 PRINT obj$;
1440 NEXT
1450 PEN 5
1460 FOR i=1 TO joyas(rm)
1470 LOCATE joyax(rm,i),joyay(rm,i)
1480 PRINT joya$;
1490 NEXT
1500 PEN 1:LOCATE xp,yp:PRINT hombre$;
1510 RETURN
1520 xf=0:yf=0:PEN 1
1530 IF INKEY(0)<>-1 OR INKEY(72)<>-1 THEN yf=-1
1540 IF INKEY(2)<>-1 OR INKEY(73)<>-1 THEN yf=1
1550 IF INKEY(8)<>-1 OR INKEY(74)<>-1 THEN xf=-1
1560 IF INKEY(1)<>-1 OR INKEY(75)<>-1 THEN xf=1
1570 IF xf=0 AND yf=0 THEN 1640
1580 LOCATE xp+xf,yp+yf:ht$=COPYCHR$(#0)
1590 IF ASC(ht$)>239 AND ASC(ht$)<246 THEN 1520
1600 IF ht$<>" " THEN 1670
1610 LOCATE xp,yp:PRINT" ";
1620 PAPER 0:LOCATE 4,24:PRINT" ";:PAPER 8
1630 xp=xp+xf:yp=yp+yf
1640 LOCATE xp,yp:PRINT hombre$;
1650 IF perro>0 THEN perro=perro MOD 2+1:IF perro=2 THEN 2560
1660 GOTO 1520
1670 gol=INSTR(gol$,ht$):car=ASC(MID$(gol$,gol,1))
1680 ON gol GOTO 1700,1700,1700,1700,1760,1760,1860,1910,1980,2100,2660
1690 GOTO 1610
1700 IF gol>2 AND gol<5 THEN car=car-1
1710 IF gol<3 THEN car=car+1
1720 PEN 3:LOCATE xp+xf,yp+yf:PRINT CHR$(car);
1730 luces(rm)=luces(rm) XOR 1
1740 IF luces(rm) THEN INK 7,10:INK 8,10 ELSE INK 7,0:INK 8,0
1750 GOTO 1520
1760 IF xf<>0 AND yf<>0 THEN 1640
1770 IF xf<0 THEN dir=4 ELSE IF xf>0 THEN dir=3
1780 IF yf<0 THEN dir=1 ELSE IF yf>0 THEN dir=2
1790 IF dir(rm,dir)=-1 THEN 1640 ELSE rm=dir(rm,dir)
1800 IF perro>0 THEN GOSUB 310
1810 IF dir=1 THEN xp=6:yp=maxy(rm)
1820 IF dir=2 THEN xp=6:yp=miny(rm)
1830 IF dir=3 THEN xp=minx(rm):yp=13
1840 IF dir=4 THEN xp=maxx(rm):yp=13
1850 RETURN
1860 IF xp>5 AND xp<8 THEN 1890
1870 IF xp<6 THEN dir=4 ELSE dir=3
1880 GOTO 1790
1890 IF yp>13 THEN dir=2 ELSE dir=1
1900 GOTO 1790
1910 PAPER 0:CLS:PEN 1
1920 LOCATE 3,3:PRINT"Usted ha escapado";
1930 LOCATE 8,5:PRINT"con";
1940 IF joyas=robado THEN LOCATE 8,7:PRINT"todas las";ELSE LOCATE 8,7
1950 PRINT USING" ##";robado;
1960 PEN 5:LOCATE 8,9:PRINT"joyas";
1970 muerto=1:RETURN
1980 LOCATE xp,yp:PRINT" ";:xp=xp+xf:yp=yp+yf
1990 i=0
2000 i=i+1
2010 IF i>joyas(rm) THEN 1520
2020 IF joyax(rm,i)<>xp OR joyay(rm,i)<>yp THEN 2000
2030 IF i=joyas(rm) THEN 2060
2040 joyax(rm,i)=joyax(rm,joyas(rm))
2050 joyay(rm,i)=joyay(rm,joyas(rm))
2060 joyas(rm)=joyas(rm)-1:robado=robado+1
2070 MOVE 400,150+(robado*2),1,1:DRAW 555,150+(robado*2),1,1
2080 SOUND 129,248,10,12,0,1
2090 GOTO 1990
2100 ruido=INT(RND*15)
2110 SOUND 1,3000,10,ruido,0,0,10
2120 PAPER 0:LOCATE 4,24:PRINT"Choque ";:PAPER 8
2130 IF ruido<10 OR retardo=50 THEN 1640
2140 retardo=retardo-50
2150 aux=REMAIN(1)
2160 AFTER retardo*4,1 GOSUB 310
2170 GOTO 1640
2180 '
2190 'Dibujar puertas
2200 '
2210 READ no,pu$
2220 IF pu$="V" THEN pu=2 ELSE pu=1
2230 PEN 2
2240 pic$=puerta$(pu):GOSUB 2510
2250 GOTO 1290
2260 '
2270 'Dibujar ventanas
2280 '
2290 READ no,ve$
2300 IF ve$="V" THEN ve=2 ELSE ve=1
2310 PEN 4
2320 pic$=vent$(ve):GOSUB 2510
2330 GOTO 1290
2340 '
2350 'Dibujar rectas
2360 '
2370 READ x1,y1,x2,y2
2380 MOVE x1,y1,0
2390 DRAW x1,y2,0:DRAW x2, y2,0
2400 DRAW x2,y1,0:DRAW x1,y1,0
2410 GOTO 1290
2420 '
2430 'Dibujar interruptores
2440 '
2450 READ no,co$
2460 IF co$="L" THEN co=1 ELSE co=2
2470 PEN 3
2480 pic$=conm$(co,0):GOSUB 2510
2490 GOTO 1290
2500 '
2510 'Escribir car
2520 '
2530 READ x,y:LOCATE x,y:PRINT pic$;
2540 no=no-1:IF no>0 THEN 2530
2550 RETURN
2560 PEN 1:LOCATE perrox,perroy:PRINT" ";
2570 hombre$=CHR$(225)
2580 IF (perrox=xp AND perroy=yp) OR (perrox=xp+xf AND perroy=yp+yf) THEN 2660
2590 IF perrox<xp THEN perrox=perrox+1
2600 IF perrox>xp THEN perrox=perrox-1
2610 IF perroy<yp THEN perroy=perroy+1
2620 IF perroy>yp THEN perroy=perroy-1
2630 LOCATE perrox,perroy:PRINT perro$;
2640 SOUND 1,0,RND*40,10,1,2,31
2650 GOTO 1520
2660 PRINT"MORDIDO";
2670 muerto=1:RETURN
2680 DATA Pasillo
2690 DATA L,64,308,226,4
2700 DATA D,2,H,6,3,6,22
2710 DATA D,2,V,4,12,9,11
2720 DATA S,1,L,4,11
2730 DATA S,1,R,9,14
2740 DATA FIN
2750 DATA Sala
2760 DATA L,2,308,258,4
2770 DATA D,1,V,10,12
2780 DATA W,1,H,6,3
2790 DATA W,1,V,2,12
2800 DATA 8,2,R,10,11,10,15
2810 DATA FIN
2820 DATA Comedor
2830 DATA L,2,308,258,4
2840 DATA W,1,V,10,12
2850 DATA W,1,H,6,3
2860 DATA D,1,V,2,12
2870 DATA S,2,L,2,11,2,15
2880 DATA FIN
2890 DATA Cocina
2900 DATA L,2,276,384,4
2910 DATA D,2,H,6,5,6,22
2920 DATA W,1,H,10,22
2930 DATA W,1,V,14,13
2940 DATA D,1,V,2,13
2950 DATA S,1,L,2,16
2960 DATA FIN
2970 DATA Despensa
2980 DATA L,2,276,256,4
2990 DATA D,1,V,10,12
3000 DATA 5,1,R,10,11
3010 DATA FIN
3020 DATA 5,4,8,21,0,4,3,2
3030 DATA 3,4,9,21,-1,-1,1,-1
3040 DATA 3,4,9,21,-1,-1,-1,1
3050 DATA 3,6,13,21,1,0,-1,5
3060 DATA 3,6,9,21,-1,-1,4,-1
3070 DATA L,64,308,480,100
3080 DATA F,250,98,294,102
3090 DATA F,250,306,294,310
3100 DATA F,390,94,430,106
3110 DATA F,390,302,430,314
3120 DATA F,474,240,488,270
3130 DATA F,474,124,488,154
3140 DATA F,58,240,72,270
3150 DATA L,226,308,322,180
3160 DATA L,160,180,480,100
3170 DATA L,64,180,160,100
3180 DATA FIN

Y hasta aquí llegamos por hoy con los listados Basic. Iremos añadiendo más listados en el artículo más adelante. Si te gustan los listados, también puedes visitar el Blog del compañero CAPA

¿Te ha Resultado útil este artículo?

Ayúdanos a mejorar y danos tu opinión:

Mostrar más

4 comentarios

  1. El Amthello está incorrecto, faltan decenas de líneas de código a partir e la 1560, y en otras hay alguna sin salto de línea, ejemplo línea 1140 unida a la línea 1150, o un salto de línea indebido al final de la línea 80 después del último LOCATE de dicha línea.

  2. Hola. El Rebotes, la línea 200 esta mal. Por favor, revisar. Debe quedar así:

    200 IF INKEY$CHR$(32) AND JOY(0)<16 THEN 200
    210 LOCATE 3,23:PRINT SPACE$(36):LOCATE 1,24:PRINT SPACE$(40); 220 GOSUB 690:GOSUB 660:GOTO 280
    230 '
    240 '

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicaciones relacionadas

Mira también
Cerrar
Botón volver arriba