Fase 1: estructura base i les 5 habitacions
This commit is contained in:
@@ -0,0 +1,318 @@
|
||||
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(i,2),dir(i,3),dir(i,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 S,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 S,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
|
||||
Reference in New Issue
Block a user