sábado, 19 de febrero de 2011

GLBasic: Lo más básico.


Veamos un pequeño resumen de lo que tenemos en el lenguaje:

1 General:
  • Los comandos se escriben en mayúsculas. En realidad no hay que preocuparse de esto porque el editor lo hace automáticamente, salvo que no reconozca la orden.
  • Las instrucciones se separan con punto y coma (;) o salto de linea.
  • Los comentarios empiezan por // (el conocido REM, es curioso que no reconozca dicha instrucción).
  • GLBasic usa doble buffer para la pantalla. Se dibuja en una zona de la memoria y no se vuelca a pantalla hasta que se usa la orden SHOWSCREEN. Si no ves nada en pantalla busca esta orden en el programa.
  • Hay tres tipos de variables (el uso de LET es opcional):
  1. Números: Por defecto se manejan los números en coma flotante.
  2. Enteros: Se le añada % al nombre de la variable al declararla.
  3. Cadenas: Se le añade $ al nombre de la variable al declararla. Al asignarle un valor ,el texto va entrecomillado.
  4. También podemos trabajar con matrices. Solo pueden tener cuatro dimensiones como máximo.
2 Control del programa:
  • Etiquetas de salto: Terminan en dos puntos (:). Útiles en conjunción con la instrucción GOTO, aunque desaconsejable el uso de esta última en aras de un buen estilo.
  • Subrutinas: Se definen con la instrucción del menú "Project/New SUB". Se llaman con GOSUB en cualquier parte del programa. El código se la subrutina se ubica al final del programa principal.
  • Bucles FOR/NEXT: Pueden ser descendentes.
  • Bucles WHILE/WEND: Se cumple hasta que la condición (evaluada al principio) sea falsa.
  • Bucles REPEAT/UNTIL: A diferencia del anterior la condición se evalual al final del bucle.
  • BREAK/CONTINUE: Usados con condicionales interrumpen o saltan una iteración del bucle.
  • SELECT/CASE: Permiten múltiples selecciones.
  • IF: el condicional de toda la vida.
  • KEYWAIT/MOUSEWAIT: El programa queda a la espera de pulsar una tecla (o botón del ratón).
3 Lectura de teclado, ratón y joystick:

Teclado:
  • KEY: Devuelve el código ASCII de la tecla pulsada.
  • INKEY$:Devuelve la tecla que ha pulsado el usuario.
  • INPUT: Lee un linea de texto hasta que se pulsa enter.
Ratón:
  • MOUSESTATE: Devuelve la localización del ratón y el estado de los botones.
  • MOUSEAXIS:Devuelve información sobre alguno de los parámetros del ratón.
  • SETMOUSE: Fija las coordenadas del ratón. Útil para limitarle el movimiento.
Joystick:
  • JOYSTATE: Devuelve la posición del joystick y de los dos botones.
  • GETJOY...: Solo para usuarios registrados. Permite acceder hasta a diez joysticks con treinta y dos botones cada uno.
4 Sonido y música:

Sonido (solo está soportado wav-PCM):
  • LOADSOUND: Carga un sonido asignándole un identificador que servirá para acceder al sonido durante el resto del programa.
  • PLAYSOUND: Toca un sonido.
  • STOPSOUND: Para un determinado sonido.
  • SOUNDPLAYING: Determina si un determinado sonido está reproduciéndose o ha acabado.
  • HUSH: Para todos los sonidos.
Música (tenemos algo más de variedad:mp3, wav y midi):
5 Gráficos en 2D:

Algunas instrucciones generales para la pantalla:
  • GETSCREENSIZE: Obtenemos la resolución de la pantalla. Recordemos que la fijamos al iniciar el proyecto.
  • SETSCREEN: Cambia el tamaño de la pantalla.
  • ISFULLSCREEN: Averigua si estamos a pantalla completa o no.
  • LIMITFPS: Limita el máximo de frames por segundo.
GLBasic usa tres buffers:
  1. Primary Surface: Lo que vemos en pantalla.
  2. Back buffer: Donde dibujan todos los comandos gráficos. No es visible hasta que se transfiere su contenido con la orden SHOWSCREEN.
  3. Offscreen Surface: Donde se almacen el background o fondo.
Para trabajar en ésta última, tenemos tres órdenes:
  • LOADBMP: Carga la imagen que le pasamos en la Offscreen Surface.
  • BLACKSCREEN:Limpia el fondo dejándolo en negro.
  • USEASBMP:Copia el Back Buffer al Offscreen Surface.

Empecemos con los comandos más simples.Recordemos que se trabaja en un buffer y que no veremos nada hasta usar SHOWSCREEN:
Para trabajar con texto tenemos:
  • PRINT: Imprime texto/números en la posición que especifiquemos.
  • GETFONTSIZE: Devuelve el tamaño de un caracter en la fuente actual.
  • LOADFONT: Carga un bmp para usarlo como fuente. Ojo a los requisitos del bmp.
  • SETFONT: Asigna una fuente cargada con la orden anterior a las instrucciones PRINT e INPUT.
Pasamos a los sprites (podemos usar bmp o png a 8 o 24 bis):
  • LOADSPRITE: Carga un sprite desde un archivo y le asigna un identificador para posteriores usos.
  • SAVESPRITE: Graba el sprite especificado.
  • DRAWSPRITE: Dibuja el sprite en el Back Buffer.
  • ROTOSPRITE: Similar a la anterior pero girando un ángulo.
  • ZOOMSPRITE: Similar a DRAWSPRITE pero escalada (admite reflexiones)
  • ROTOZOOMSPRITE: ¿Por qué no tener ambas instrucciones en una sola?
  • STRETCHSPRITE: Similar a ZOOMSPRITE pero especificamos el tamaño final en píxeles en lugar del factor de escalado.
Podemos trabajar con animaciones (tiras de sprites):
Existen instrucciones similares a las de los sprites (rotar, zoom,...)

Se considera transparente el color R:255,G:0 B:128. Queda bastante más por ver, pero por ahora es suficiente para empezar a trabajar.

Enlaces:

Listado alfabético de instrucciones.
Listado de instrucciones por categorías.