PROGRAMACION EN BASIC (y 5)

Por... Carlos Martínez Aguirre

Sic transit gloria mundi. Todo llega a su fin, y este curso tenía que acabarse algún día. El capítulo de este número será el último de la serie. Vamos con él.

6400 CLS:PANTALLA=5

6410 Z=5:PRINT "EL DORMITORIO ES UNA GRAN HABITACION CON UNA CAMA DE MATRIMONIO, DOS MESILLAS Y ALGUNOS ESTANTERIAS. LO MAS INTERESANTE ES LA VENTANA... ":GOSUB 5000

6420 GOSUB 4000

6430 IF Z$="N" THEN GOTO 6300

6440 IF Z$="S" THEN GOTO 6500

6445 IF Z$="SALIDAS" THEN PRINT "LAS SALIDAS POSIBLES SON: ESTE Y SUR.":GOTO 6420

6450 IF Z$="EXAMINA DORMITORIO" THEN PRINT "LA VENTANA PODRIA SER TU SALVACION.":GOTO 6420

6455 IF Z$="EXAMINA VENTANA" THEN PRINT "UNA ESPESA CUERDA LA MANTIENE CERRADA.":GOTO 6420

Bueno, hasta aquí todo está dado, vamos ahora con las novedades.

6460 IF G<>1 AND A=100 AND Z$="CORTA CUERDA CON CUCHILLO" THEN PRINT "NO ALCANZAS.":GOTO 6420

6465 IF G=1 AND A=100 AND Z$="CORTA CUERDA CON CUCHILLO" THEN PRINT "AL VER EL GATO QUE NO ALCANZAS BAJA EL LOMO, TE AUPA Y ¡CORTAS LA CUERDA! LA VENTANA ESTA ABIERTA. HAS ALCANZADO TU LIBERTAD. FELICIDADES.":END

En estas dos lineas esta todo el guiso de la aventura. En ellas se resumen las condiciones básicas para ganar. Es decir: en la linea 6465 vemos que para que la proposición CORTA CUERDA CON CUCHILLO funcione con éxito necesitamos que el gato esté presente y que tengamos el cuchillo. Todo ello mediante nuestro código secreto, que a estas alturas del curso, dominamos perfectamente.

6470 IF Z$<>"" THEN PRINT "NO PUEDES HACER ESO.":GOTO 6420

6480 GOTO 6420

Con esto ya tenemos todas las pantallas fundamentales terminadas. Las pantallas del cuarto de juegos y el WC no aportan nada nuevo, y son similares a los pasillos:

6500 CLS: PANTALLA=6

6510 Z=6:PRINT "EL CUARTO DE JUEGOS TIENE UNA GRAN CANTIDAD DE JUGUETES, TEBEOS Y REVISTAS. LO MAS DESTACABLE ES EL GRAN ORDENADOR QUE SE ENCUENTRA EN LA MESA DE LA ESQUINA. JUNTO A EL, LA ESPLENDIDA COLECCION DE CAADS DE LA FAMILIA.":GOSUB 5000

6520 GOSUB 4000

6530 IF Z$="N" THEN GOTO 6400

6540 IF Z$="E" THEN GOTO 6000

6545 IF Z$<>"" THEN PRINT "NO PUEDES HACER ESO.":GOTO 6520

6550 GOTO 6520

6600 CLS:PANTALLA=7

6610 Z=7:PRINT "AQUI ESTAN EL RETRETE, LA BAÑERA, EL LAVABO Y EL BIDE. TODO PARECE LIMPIO, PERO ES MEJOR NO INVESTIGAR.":GOSUB 5000

6620 GOSUB 4000

6630 IF Z$="O" THEN GOTO 6000

6640 IF Z$<>"" THEN PRINT "NO PUEDES HACER ESO":GOTO 6620

6650 GOTO 6620

Evidentemente estas dos pantallas las he simplificado al máximo, no obstante, siguen funcionando a la perfección (aunque no es en absoluto recomendable reducir tanto la capacidad de respuesta).

Bueno, vamos a ver por último un posible sistema para salvar las partidas en PC (supongo que en otros ordenadores se hará de otra manera, pues la creación de archivos es diferente en cada intérprete de BASIC.) Habíamos situado el SAVE en la linea 20000

20000 REM *** SALVAR DATOS ***

20010 INPUT "NOMBRE:",NOMBRE$

20020 OPEN NOMBRE$ FOR OUTPUT AS #1

20030 WRITE #1,A,B,G,Z,HORA,NEVERA,PANTALLA

20040 CLOSE #1

20050 RETURN

Como veis lo que he hecho es abrir un fichero en el cual grabo todas las variables manejadas en el juego, para, que al recuperarlo todo siga igual. Ahora el único problema sería aparecer en la misma pantalla donde nos quedamos. Esto se resuelve gracias a la palabrita PANTALLA de la siguiente forma:

30000 REM *** RECUPERAR DATOS ***

30010 INPUT "NOMBRE":,CARGA$

30020 OPEN CARGA$ FOR INPUR AS #1

30030 INPUT #1,A,B,G,Z,HORA,NEVERA,PANTALLA

30040 CLOSE #1 30050 IF PANTALLA=1 THEN GOTO 6000

30060 IF PANTALLA=2 THEN GOTO 6100

30070 IF PANTALLA=3 THEN GOTO 6200

30080 IF PANTALLA=4 THEN GOTO 6300

30090 IF PANTALLA=5 THEN GOTO 6400

30100 IF PANTALLA=6 THEN GOTO 6400 30110 IF PANTALLA=7 THEN GOTO 6500

Y esto es todo señores. Espero que ninguno de los que han seguido el curso tenga dificultades en hacer su propia aventura. Por cierto, sería muy interesante que os animarais a mandar al CAAD los listados de las aventuras que hagais con este método. Estoy seguro de que todos aprenderíamos mucho. En vuestras manos lo dejo.