wumpus.bas

0010  REM- HUNT THE WUMPUS
0015  REM:  POR GREGORY YOB
0020  PRINT "INSTRUCCIONES (S-N)";
0030  INPUT I$
0040  IF I$="N" THEN 52
0050  GOSUB 1000
0052  REM- ANUNCIA WUMPUSII PARA TODOS LOS AFICIONADOS ... AGREGADO POR DAVE
0054  PRINT
0056  PRINT "     ATENCION AMANTES DE WUMPUS!!!"
0058  PRINT "     HAY AHORA DOS ADICIONES MAS A LA FAMILIA WUMPUS";
0060  PRINT " DE PROGRAMAS."
0062  PRINT
0064  PRINT "     WUMP2:  ALGUNOS ARREGLOS DE CAVERNAS DISTINTOS"
0066  PRINT "     WUMP3:  PELIGROS DIFERENTES"
0067  PRINT
0068  REM- CONFIGURA CAVERNAS (LISTAS DE NODOS DODECAEDRO)
0070  DIM S(20,3)
0080   FOR J=1 TO 20
0090    FOR K=1 TO 3
0100    READ S(J,K)
0110    NEXT K
0120   NEXT J
0130  DATA 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6
0140  DATA 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11
0150  DATA 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16
0160  DATA 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19
0170  DEF FNA(X)=INT(20*RND(0))+1
0180  DEF FNB(X)=INT(3*RND(0))+1
0190  DEF FNC(X)=INT(4*RND(0))+1
0200  REM-LOCALIZA L ARRAY ITEMS
0210  REM-1-YOU,2-WUMPUS,3&4-PITS,5&6-BATS
0220  DIM L(6)
0230  DIM M(6)
0240   FOR J=1 TO 6
0250   L(J)=FNA(0)
0260   M(J)=L(J)
0270   NEXT J
0280  REM-REVISA COINCIDENCIAS (IE L(1)=L(2),ETC)
0290   FOR J=1 TO 6
0300    FOR K=J TO 6
0310    IF J=K THEN 330
0320    IF L(J)=L(K) THEN 240
0330    NEXT K
0340   NEXT J
0350  REM-SET# FLECHAS
0360  A=5
0365  L=L(1)
0370  REM-CORRE EL JUEGO
0375  PRINT "CAZA EL WUMPUS"
0380  REM-ADVERTENCIAS DE PELIGROS Y LOCALIZACION
0390  GOSUB 2000
0400  REM-MOVER O TIRAR
0410  GOSUB 2500
0420  GOTO O OF 440,480
0430  REM-TIRAR
0440  GOSUB 3000
0450  IF F=0 THEN 390
0460  GOTO 500
0470  REM-MOVER
0480  GOSUB 4000
0490  IF F=0 THEN 390
0500  IF F>0 THEN 550
0510  REM-PIERDE
0520  PRINT "JA JA JA - USTED PIERDE!"
0530  GOTO 560
0540  REM-GANA
0550  PRINT "JE JE JE - EL WUMPUS LO ATRAPARA LA VEZ SIGUIENTE!!"
0560   FOR J=1 TO 6
0570   L(J)=M(J)
0580   NEXT J
0590  PRINT "MISMA CONFIGURACION (S-N)";
0600  INPUT I$
0610  IF I$#"S" THEN 240
0620  GOTO 360
1000  REM-INSTRUCTIONES
1010  PRINT "BIENVENIDO A 'CAZA EL WUMPUS'"
1020  PRINT "  EL WUMPUS VIVE EN UNA CAVERNA DE 20 SALAS. CADA SALA"
1030  PRINT "TIENE TRES TUNELES A OTRAS SALAS. (MIRA A UN"
1040  PRINT "DODECAEDRO PARA VER COMO ES-SI NO SABES LO QUE ES"
1050  PRINT "UN DODECAEDRO, PREGUNTALE A ALGUIEN)"
1060  PRINT
1070  PRINT "     PELIGROS:"
1080  PRINT " ABISMOS SIN FONDO - DOS CAVERNAS TIENEN ABISMOS SIN FONDO"
1090  PRINT "     SI VA ALLI, CAERA EN EL ABISMO (& PERDERA!)"
1100  PRINT " SUPER MURCIELAGOS - OTRAS DOS CAVERNAS TIENEN SUPERMURCIELAGOS."
1110  PRINT "     SI VA ALLI, EL MURCIELAGO LO TOMA Y LO LLEVA A OTRA"
1120  PRINT "     CAVERNA AL AZAR. (LO QUE PUEDE SER PROBLEMATICO)"
1130  PRINT
1140  PRINT "     WUMPUS:"
1150  PRINT " EL WUMPUS NO ES MOLESTADO POR LOS PELIGROS (TIENE PIES"
1160  PRINT " DE VENTOSAS Y ES MUY GRANDE PARA QUE LO LEVANTEN LOS MURCIELAGOS)."
1170  PRINT " USUALMENTE ESTA DORMIDO. DOS COSAS LO DESPIERTAN: USTED ENTRANDO"
1180  PRINT " A SU CAVERNA O DISPARARLE UNA FLECHA."
1190  PRINT "     SI EL WUMPUS DESPIERTA, SE MUEVE (P=.75) A UNA SALA"
1200  PRINT " O SE QUEDA QUIETO (P=.25). DESPUES DE ESO, SI LO ENCUENTRA"
1210  PRINT " EN DONDE SE HAYA, LO DEVORARA (& USTED PIERDE!)"
1220  PRINT
1230  PRINT "     USTED:"
1240  PRINT " CADA TURNO PUEDE MOVERSE O DISPARAR UNA FLECHA"
1250  PRINT "   MOVER: PUEDE IR A UNA SALA (A TRAVES DE UN TUNEL)"
1260  PRINT "   FLECHA: TIENE 5 FLECHAS. PIERDE CUANDO SE LE ACABAN."
1270  PRINT "   CADA FLECHA PUEDE IR DE 1 A 5 CAVERNAS. APUNTA DICIENDOLE"
1280  PRINT "   A LA COMPUTADORA LA CAVERNA#S A LA QUE QUIERE QUE VAYA LA FLECHA."
1290  PRINT "   SI LA FLECHA NO PUEDE IR EN SA DIRECCION (EJ NO HAY TUNEL) SE MUEVE"
1300  PRINT "   AL AZAR HASTA LA SIGUIENTE CAVERNA."
1310  PRINT "     SI LA FLECHA DA AL WUMPUS, USTED GANA."
1320  PRINT "     SI LA FLECHA LE DA A USTED, USTED PIERDE."
1330  PRINT
1340  PRINT "    CUIDADO:"
1350  PRINT "     CUANDO ESTA A UNA SALA DE DISTANCIA DEL WUMPUS O UN PELIGRO,"
1360  PRINT "    LA COMPUTADORA LE DIRA:"
1370  PRINT " WUMPUS     -  'APESTA A WUMPUS'"
1380  PRINT " MURCIELAGO -  'MURCIELAGOS CERCA'"
1390  PRINT " ABISMO     -  'SIENTO UNA CORRIENTE DE AIRE'"
1400  PRINT ""
1410  RETURN
2000  REM-IMPRIME LOCALIZACION Y ADVERTENCIAS DE PELIGRO
2010  PRINT
2020   FOR J=2 TO 6
2030    FOR K=1 TO 3
2040    IF S(L(1),K)#L(J) THEN 2110
2050    GOTO J-1 OF 2060,2080,2080,2100,2100
2060    PRINT "APESTA A WUMPUS!"
2070    GOTO 2110
2080    PRINT "SIENTO UNA CORRIENTE DE AIRE"
2090    GOTO 2110
2100    PRINT "MURCIELAGOS CERCA!"
2110    NEXT K
2120   NEXT J
2130  PRINT "ESTA EN LA CAVERNA "L(1)
2140  PRINT "TUNELES LLEVAN A "S(L,1);S(L,2);S(L,3)
2150  PRINT
2160  RETURN
2500  REM-ELIGE OPCION
2510  PRINT "DISPARAR FLECHA O MOVERSE (F-M)";
2520  INPUT I$
2530  IF I$#"F" THEN 2560
2540  O=1
2550  RETURN
2560  IF I$#"M" THEN 2510
2570  O=2
2580  RETURN
3000  REM-SUBRUTINA DE LA FLECHA
3010  F=0
3020  REM-RUMBO DE LA FLECHA
3030  DIM P(5)
3040  PRINT "NO. DE CAVERNAS(1-5)";
3050  INPUT J9
3060  IF J9<1 OR J9>5 THEN 3040
3070   FOR K=1 TO J9
3080   PRINT "CAVERNA #";
3090   INPUT P(K)
3095   IF K <= 2 THEN 3115
3100   IF P(K) <> P(K-2) THEN 3115
3105   PRINT "LAS FLECHAS NO SON TAN INTELIGENTES - PRUEBE OTRA CAVERNA"
3110   GOTO 3080
3115   NEXT K
3120  REM-DISPARA FLECHA
3130  L=L(1)
3140   FOR K=1 TO J9
3150    FOR K1=1 TO 3
3160    IF S(L,K1)=P(K) THEN 3295
3170    NEXT K1
3180   REM-SIN TUNEL PARA FLECHA
3190   L=S(L,FNB(1))
3200   GOTO 3300
3210   NEXT K
3220  PRINT "HA ERRADO"
3225  L=L(1)
3230  REM-MUEVE WUMPUS
3240  GOSUB 3370
3250  REM-REVISA MUNICION
3255  A=A-1
3260  IF A>0 THEN 3280
3270  F=-1
3280  RETURN
3290  REM-VER SI LA FLECHA ESTA EN L(1) O L(2)
3295  L=P(K)
3300  IF L#L(2) THEN 3340
3310  PRINT "AJA! LE DIO AL WUMPUS!"
3320  F=1
3330  RETURN!
3340  IF L#L(1) THEN 3210
3350  PRINT "OUCH! LA FLECHA LE DIO A USTED!"
3360  GOTO 3270
3370  REM-SUBRUTINA MOVER WUMPUS
3380  K=FNC(0)
3390  IF K=4 THEN 3410
3400  L(2)=S(L(2),K)
3410  IF L(2)#L THEN 3440
3420  PRINT "CRUNCH CRUNCH CRUNCH- EL WUMPUS LO HA ATRAPADO!"
3430  F=-1
3440  RETURN
4000  REM- RUTINA MOVERSE
4010  F=0
4020  PRINT "HACIA DONDE";
4030  INPUT L
4040  IF L<1 OR L>20 THEN 4020
4050   FOR K=1 TO 3
4060   REM- REVISA SI ES MOVIDA LEGAL
4070   IF S(L(1),K)=L THEN 4130
4080   NEXT K
4090  IF L=L(1) THEN 4130
4100  PRINT "NO ES POSIBLE -";
4110  GOTO 4020
4120  REM-CHECK FOR HAZARDS
4130  L(1)=L
4140  REM-WUMPUS
4150  IF L#L(2) THEN 4220
4160  PRINT "...OOPS! BUMPED A WUMPUS!"
4170  REM-MOVE WUMPUS
4180  GOSUB 3380
4190  IF F=0 THEN 4220
4200  RETURN
4210  REM-ABISMO
4220  IF L#L(3) AND L#L(4) THEN 4270
4230  PRINT "AAAAAAAH! . . . CAYO AL ABISMO"
4240  F=-1
4250  RETURN
4260  REM-MURCIELAGOS
4270  IF L#L(5) AND L#L(6) THEN 4310
4280  PRINT "ZAP--LO ATRAPO EL SUPERMURCIELAGO! TERMINARA EN CUALQUIER LADO!"
4290  L=FNA(1)
4300  GOTO 4130
4310  RETURN
5000  END
  • wumpus.bas.txt
  • Última modificación: 2023/11/06 23:58
  • por peron