PROGRAMACION EN BASIC

Estimados consocios ( es broma Juanjo ): en nuestra clase de hoy veremos dos pantallas más, y en cuanto acabemos todas nos meteremos con otras cuestiones técnicas como CARGAR, SALVAR, y los gráficos. Habíamos acordado que el comedor empezaría en la linea 6200, pues bien, vamos allá:

6200 CLS:PANTALLA=3

6210 Z=3:PRINT "EL COMEDOR QUE HACE LAS VECES DE SALA DE ESTAR, BIBLIOTECA Y CUARTO DE LA TELE. HAY UNA MESA GRANDE CON CUATRO SILLAS EN TORNO SUYO. TAMBIEN HAY VARIOS CUADROS.":GOSUB 5000

6220 GOSUB 4000

6230 IF Z$="S" THEN GOTO 6100

6240 IF Z$="O" THEN GOTO 6300

6250 IF Z$="SALIDAS" THEN PRINT "LAS SALIDAS POSIBLES SON SUR Y OESTE.":GOTO 6220

6260 IF Z$="EXAMINA COMEDOR" AND G=1 THEN PRINT "UN GRAN COMEDOR CON UNA LAMPARA DE SEIS BOMBILLAS.":GOTO 6220

6270 IF Z$="EXAMINA COMEDOR AND G<>1 THEN PRINT "UN MININO GRIS ESTA DURMIENDO EN EL SOFA.":GOTO 6220

Con estas dos últimas líneas conseguimos que el intérprete nos de dos descripciones diferentes, una cuando el gato nos acompaña, y la otra cuando aún no es amigo nuestro.

6280 IF Z$="DESPIERTA GATO" AND G<>1 AND B=100 THEN PRINT "AL DESPERTARSE Y VER TU TOMATE, EL GATO SE LO COME Y SE HACE AMIGO TUYO.":G=1: B=0 :GOTO 6220

6290 IF Z$="DESPIERTA GATO" AND G<>1 AND B<>100 THEN PRINT "AL DESPERTASE EL GATO MISI LANZA UN FEROZ MAULLIDO Y SE VUELVE A DORMIR.":GOTO 6220

6295 IF Z$<>"" THEN PRINT "NO PUEDES HACER ESO.":GOTO 6120

6299 GOTO 6220

Como veis, aquí juego con dos variables, el gato (G) y el tomate (B). Estas dos variables son muy diferentes, pues una es de objeto y la otra es de personaje. Primero el intérprete lee la frase "DESPIERTA GATO" y comprueba si el gato está presente, pero eso no quiere decir que el gato esté presente en el comedor, que directa o indirectamente siempre lo está, sino si el gato sigue a Currito, es decir: Si G=1. A continuación comprueba la variable B, que es el tomate. Si Currito tiene el tomate, entonces B=100, por lo que el gato lo coge y se hace amigo tuyo (G=1). En caso contrario no pasa nada. Además hay que notar que cuando el gato se come el tomate, este desaparece: B=0, con lo que ya no lo veremos más en el inventario.

Con estos sencillos juegos binarios se pueden realizar infinidad de acciones y problemas lógicos. Es más duro de programar que con el PAW, pero también más satisfactorio para el programador porque la lógica juega un papel más importante. Otra cosa importante es que cuando pregunto al ordenador si Currito tiene el tomate, no digo IF B=0, porque puede ocurrir que B=1 si lo ha dejado en el pasillo, y entonces no entendería el mensaje, y respondería NO PUEDES HACER ESO, lo cual sería un fallo imperdonable. Por eso pregunta IF B<>1, lo cual quiere decir que acepte la condición sólo si B es diferente que uno, es decir, que la aceptará siendo 0, 2, 3, 4, 5..., lo cual significa siempre que Currito no lo lleve encima.

Veamos ahora la cocina, que es una pantalla de similares características que la anterior

6300 CLS:PANTALLA=4

6310 Z=4:PRINT "LA COCINA COMPLETA REZUMA DE LIMPIA. AQUI ES DONDE LA SEÑORA BUÑEZ PASA LOS MEJORES MOMENTOS DEL DIA, LIMPIANDO, FREGANDO, Y OLIENDO EL FRESCO OLOR A PINO DEL AMONIACLORO.":GOSUB 5000

6320 GOSUB 4000

6330 IF Z$="E" THEN GOTO 6200

6340 IF Z$="S" THEN GOTO 6400

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

6360 IF Z$="EXAMINA COCINA" THEN PRINT "TODO HUELE A PINO...HASTA LA NEVERA.":GOTO 6320

6370 IF Z$="EXAMINA NEVERA" AND NEVERA=0 THEN PRINT "LA NEVERA ES AMPLIA. COLGANDO DE SU PUERTA HAY UN CUCHILLO. DENTRO HAY UN TOMATE.":PRINT "COGES EL CUCHILLO.":PRINT "COGES EL TOMATE.":A=100:B=100:NEVERA=1:GOTO 6320

6380 IF Z$="EXAMINA NEVERA" AND NEVERA=1 THEN PRINT "ESTA VACIA.":GOTO 6320

Aquí he vuelto a utilizar el código binario para las condiciones, que como veis no tiene ningún misterio. Es importante que las condiciones se vayan poniendo por orden, para luego saber qué es lo que va a responder primero, y qué es lo que responderá después ( es decir, tras realizar la acción ). En este ejemplo la acción inicial es examinar la nevera (NEVERA=0 pasa a NEVERA=1), que es cuando se cogen los dos objetos, y después, si se vuelve a examinar la nevera nos responderá algo totalmente distinto ( Cuando NEVERA=1 entonces está vacia). A continuación el cierre de pantalla:

6390 IF Z$<>"" THEN PRINT "NO PUEDES HACER ESO.":GOTO 6320

6395 GOTO 6320

Bueno, hasta ahora solo he recibido dos cartas, y más que dudas lo que traían eran sugerencias. Eso está bien, porque significa que todos los que seguís el curso os vais enterando, de todos modos, y si teneis algo que contarme ya sabéis...

3PSOFT
APARTADO DE CORREOS 45076
28080 MADRID

¡Ah!, y feliz 1992.

Carlos Martínez Aguirre.