SABERMASJUSTODARACT
SABERMASJUSTODARACT Por una Facultad de provecho a la comunidad

Ultimos análisis sobre Qbasic

Ahora analizaremos códigos de algunos jueguitos básicos hechos en este idioma.

El primero que tenemos es el barquito.bas, lo cargamos pues y lo comenzamos a analizar.

DIM Mapa$(0 TO 9, 0 TO 9)   ß Declaramos una matriz de dos dimensiones de 10 x 10                                                  

DIM EMapa$(0 TO 9, 0 TO 9)

DIM AMapa$(0 TO 9, 0 TO 9)                                                   

nueva% = 1                                                                   

Musi$ = "L16N35N33N31N33N35N35N35N0N35N35N37N31N27N0N35N33N31N33N35N35N35N0N35N35N37N31N27N0N35N33N31N33N35N35N35N0N35N35N37N31N29"´ß Esta cadena es la musiquita

Pt$ = "▄▄▄×"    ß Imito figura de barquitos con los caracteres de texto especiales (ayudaà contenido à tabla de caracteres ASCII para tener acceso a ellos, aprieto el Alt izquierdo y escribo el decimal correspondiente en el teclado numérico (para las portables. Tendré que usar la tecla  Alt + la Fn mas los números en azul

‘Recordemos que si ponemos Alt.; FN; numero en azul, es una secuencia de apretar una tecla después de la otra, mas cuando digo Alt + Fn +Num en azul en una teniendo la /las anteriores presionadas

 

‘//en esta sección defino en una variable, cada una de las figuras que usaré

Bc$ = "Øw/"                                                                  

Sm$ = "▄▄█▄"                                                                 

Cg$ = "­­]"                                                                 

Dd$ = "_"                                                                     

Inicio:                                                                      

GOSUB cuadro     ß me voy al sub cuadro para pintar la pantalla con la retícula                                                            

COLOR 2, 0                                                                   

LOCATE 5, 8                                                                  

PRINT "████▄"                                                                

LOCATE 6, 8                                                                  

PRINT "█   █"                                                                

LOCATE 7, 8                                                                  

PRINT "████"                                                             

LOCATE 8, 8                                                                

PRINT "█   █"                                                                 

LOCATE 9, 8                                                                   

PRINT "███▀"                                                                  

LOCATE 5, 15                                                                  

PRINT " ███ "                                                                 

LOCATE 6, 15                                                                  

PRINT "█   █"                                                                 

LOCATE 7, 15                                                                  

PRINT "█████"                                                                 

LOCATE 8, 15                                                                  

‘//en esta sección armo el cartel en letras grandes que dice batalla naval

‘El código que sigue, es para ubicar los barquitos del jugador, no esta previsto que usen mas de una casilla ni que la casilla esté ocupada, el ultimo en ocupar la casilla borra al anterior

‘Seguidamnte, oculta se carga una matriz similar al azar con los elementos de la PC, vemos el uso de RND que multiplicado por un numero entero, da un valor entre 0 y ese entero (ya que la función devuelve un valor entre 0 y 1 y las características del tipo de variables donde se guarda el resultado, al ser para un número entero, redondea al entero mas cercano.

‘Luego se piden las coordenadas (letra y Nro de cada disparo del jugador

Al dar Enter, se genera un dibujito que cruza por la pantalla en forma de torpedo, y si da en algún blanco, muestra un dibujito y un ruido especial sino sigue hasta finalizar

‘Luego la PC hace sus tiros al azar

‘Se suman los puntos obtenidos en cada caso y se determina un ganador

Se determina si va a volver a jugar y en caso de que si, si va a usar los datos anteriores cargados o creará una nueva disposición para sus barcos

El sub puaj genera un sonido de puaj indicando derrota o barco hundido, se hace también eligiendo al azar un conjunto de notas. Como al usar un sonido, el programa se detiene hasta que ejecuta el sonido, siempre se presenta la imagen primero y se pone el sonido después, la imagen permanecerá lo que dure el sonido, caso contrario la imagen no se verá ya que su presentación y borrado son tan rápidos que pasará imperceptible.

En el sub ingreso, controlamos el tipo de datos a ingresar, para que el programa no se tilde. Para eso, ingresamos el valor como un carácter y lo analizamos, si su valor en ASCII esta entre los limites definidos, entonces pasa, sino pide el reingreso de datos

La función de ingreso de datos, INPUT  “enunciado: ”, Dato

tiene ya un filtrado, y que si pide un número e ingresamos una letra, dice “empezar nuevamente”  y pide el reingreso del dato.

 

Luego, para PC antiguas, con reloj de hasta 16mghz (16 mega Herzt = 16000000 ciclos por segundo) como es el caso de la 8085, 8086 la 80286 este juego corre de maravillas, en PC mas modernas, se produce un desfasaje entre el sonido y la presentación, frenando y trabando el programa, razón por la cual, comenzó a usarse el sistema se sincronización llamado DIRECT X.
Formula1.bas cuando se corre con los windows modernos y máquinas rápidas, muestra estos desfasajes. Este juego se juega con las teclas del teclado numérico, por lo que en las portables se va a hacer muy difícil jugarlo, pero su código puede darnos una idea de como se hacen los juegos y si se tienen ganas de trabajar, se pueden activar otras teclas que esten disponibles en las portables
En el caso de Qbasic, la habilitacion de las teclas consta de dos partes, la definicion de que van a hacer y la habilitacion de la tecla,

ON KEY(13) GOSUB Der
ON KEY(12) GOSUB Izq
ON KEY(11) GOSUB Ace
ON KEY(14) GOSUB Stp

aca de define lo que hace, el nro encerrado en el paréntesis define la tecla segun la tabla que podemos consultar en AYUDA--> Indice--> On Key --> <Declarar teclas Predefinidas por el Usuario> --> <Codigo Exploracion Teclado>
Luego dentro del ciclo que hace funcionar el juego

DO
KEY(12) ON
KEY(11) ON
KEY(13) ON
KEY(14) ON
 se habilitan las teclas para que actúen
Tambien vemos una referencia al mouse, pero esto es para los mouses que se conectaban al puerto DB9 Serial, no correspondiendo a las direcciones de memoria de los mouses de  máquinas mas nuevas
Por último, una tabla de ganadores que se guarda en un archivo de disco en el Sub " Muestra"

Las aplicaciones de DIRECT X fueron diseñadas para Windows por Microsoft, pero hay similares que usan otros sistemas operativos, y que ahora permiten la graficacion  3D en movimiento.
Estas aplicaciones, permiten canalizar por separado audio y video en forma separada sin que uno interfiriera con el otro, además de asegurar un sincronismo entre ambos

En pantalla de texto, la forma de presentar una imagen en movimiento, es generar esas imágenes con los caracteres, pero además se debe poner un espacio vacío de caracteres alrededor y desplazarse de a uno por vez, para que esos caracteres vacíos, borren lo que haya quedado en pantalla del dibujo en su posición anterior. Errores en este procedimiento, hacen que parte de la imagen quede dibujada en pantalla.

Otra forma de hacerlo, es limpiar la pantalla y llenarla después de cada movimiento, pero es muchísimo más lento.

Las presentaciones graficas que tiene Qbasic, son aún mas lentas que la  presentación con caracteres, por lo cual lo grafico solo es usado para imágenes fijas.

Por ultimo, vemos otro código que nos mostrará más de cerca el uso de objetos, y se trata del tipito.bas

Las palabras que se usan en la POO no existen en este idioma, pero si cosas similares que podemos usar para entender como funcionan.

 

Al abrirlo, vemos casi nada de código, porque todo esta oculto en una SUB (como si fuera una clase) declarada como “SUB cara” a la cual le paso parámetros (lin% col% dichos$ ) y ese mismo objeto, según los parámetros se comporta presentando distintas formas en pantalla.

Recordemos que un objeto, es una instancia de una clase, o sea que al invocarla y pasarle los datos de los parámetros, se comporta como un objeto que en este caso, muestra una imagen, en nuestro caso, para cada valor de la variable i%  y j% llamamos a cara i%, j% bla$ diciéndole lo que tiene que mostrar.

En “Ver” podemos usar el Dividir pantalla, y dejar en la parte superior el tipito.bas y en la parte inferior (nos posicionamos con un click del Mouse) abrir el sub.

Para visualizar este código oculto, vamos a ver, SUBs y allí seleccionamos cara, y editar en pantalla

Muchos compiladores, permiten además codificar una parte del código, esto es hacerlo ilegible a otro usuario transformándolo en un objeto que solo el programa que lo invoca entiende; de esta manera se puede proteger el código que se hace y evitar que otros saquen provecho del mismo.      

Insisto en que una forma de mostrar semejanzas, para entender el tema, no de definir una clase, porque hay fanas que no admiten que se pueda aprender por semejanzas, sino que a cada cosa definen estrictamente.  El fundamento es que la declaración de una clase, no crea un lugar en la memoria, pero al declarar una instancia (objeto) el lugar en la memoria para que funcione es creado, asimismo como en la clase se usan símbolos y palabras claves específicamente de clase.

 

Quedaría ahora, antes de dar el tema por visto, que cada uno en forma individual desarrolle varios programas usando las palabras claves vista y otras también, que podrán encontrar en el índice de la ayuda con su explicación y ejemplo

 

Tenemos que tener en cuenta que los creadores de este idioma de programación, trataban de cubrir todas las expectativas de las PC de su época, que por lógica no son las mismas hoy día, pero así como ellos en su oportunidad, salieron del primitivo idioma de máquina para presentar algo mas sencillo y accesible, sería bueno que le saquemos todo el provecho que se pueda sacarle, porque esa es la base del conocimiento humano, tomar de las experiencias pasadas y edificar sobre ellas, de esa manera cada vez se llega mas alto, no es que nosotros seamos mas inteligentes que hace 100 años, sino que aprendimos a asimilar el conocimiento de ellos sin tener que pasar por las pruebas que ellos pasaron, y a partir de eso que damos por echo y lógico aportamos lo nuestro así como los que vienen, aportarán lo suyo

Por dudas y consultas, usar el ítem comunicándonos del menú, y por favor, ser tan claro y específico como se pueda, que yo tampoco soy una lumbrera de entendimiento.


Los códigos y los programas están a disposición del que quiera, sin ir contra los derechos de autoria y de propiedad vigentes. Use el formularo de contacto para que podamos ver como intercambiar la documentación-_ Gracias.-

 

 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis