Una historia de tres juegos: programación en lenguajes para niños (IV de IV)


Primer intento en SmallBasic. Se puede jugar controlando el movimiento del corredor con las flechitas del teclado. La versión local funcionaba bien, al subirla note ciertos fallos

Small Basic es un lenguaje de reciente invención. En este caso me refiero a la versión de Microsoft, ya que no hay que confundirlo con otro Small Basic que existe y que está disponible en Sourceforge.

La gente de Microsoft está haciendo un excelente trabajo en el desarrollo de este producto, con una buena idea en mente: devolver la diversión a la programación (Microsoft Small Basic puts the “fun” back into computer programming), pero hay que reconocer que todavía tiene camino por recorrer.

Small Basic no provee al programador con ninguna librería de imágenes prediseñadas, aunque es muy fácil cargar una imagen almacenada localmente o desde cualquier sitio de Internet con el objeto ImageList y luego mostrarla con el objeto Shapes. Se hace así:

CoPNG = ImageList.LoadImage("http://ingenieriasimple.com/smallbasic/Corredor01.png")
CoSh = Shapes.AddImage(CoPNG)

La primera instrucción carga la imagen y devuelve su nombre, que queda almacenado en la variable CoPNG, la segunda agrega la imagen cargada a la lista local de imágenes, la muestra en pantalla y devuelve un identificador de la imagen que queda almacenado en la variable CoSh.

De los tres lenguajes estudiados Small Basic es probablemente el menos intuitivo, las dos “fáciles” instrucciones recién listadas son un ejemplo. Pero una vez uno se ha familiarizado con los objetos disponibles, la verdadera diversión empieza, aunque no son pocos objetos, ImageList y Shapes son solo un par de una larga lista que incluye: Array, Clock, Controls, Desktop, Dictionary, File, Flickr, GraphicsWindow, File, Math, Mouse, Network, Program, Sound, Stack, Text, TextWindow, Timer y Turtle, además de los que el usuario decida agregar instalando complementos y para llegar a conocerlos hay que revisar la documentación que es muy buena.

Segundo intento en SmallBasic. Se corrigió la distancia a la que el corredor debe estar de los terrones para empezar a subir.

Además Small Basic provee al programador de “Intellisense” que es un sistema que en cuanto se empieza a escribir un comando, provee de ayuda inteligente, como complemento de la instrucción y sus parámetros, descripción del comando, ejemplos, etc. Sin eso la programación aquí sería más que complicada.

Siguiendo con el desarrollo del juego, procedí a preparar todas las imágenes que necesitaría para el programa. De un proyecto anterior tenía un archivo GIF animado de un corredor. El GIF almacena una imagen por cada etapa del movimiento, así que solo tuve que separar cada imagen para cargarla en el programa y luego mostrarlas y ocultarlas secuencialmente para dar la impresión de movimiento. El corredor jugaría el papel de la bolita de Rapid Roll, así que le programé movimiento permanente a la izquierda y derecha, controlado por las flechas del teclado y movimiento hacia abajo. Se dice fácil pero ¡vaya que no lo fue!

Cuando intenté poner en línea la primera versión descubrí que las imágenes GIF no funcionan y tuve que cambiarlas a formato PNG. La gente del foro de Small Basic me ayudó para ello y tengo que reconocer que están prestos a ayudar, lo cual es muy bueno. A ellos también les sirvió pues se enteraron que las imágenes GIF no funcionan y supongo que en alguna versión posterior lo arreglarán.

Small Basic provee un sistema de ayuda en línea llamado Intellisense

Small Basic provee un sistema de ayuda en línea llamado Intellisense con el que se facilita la programación

Decidí dibujar unos terrones triangulares para que jugaran el papel de las barras ascendentes de Rapid Roll. Luego les programé el movimiento permanente hacia arriba empezando desde una posición aleatoria en la parte baja de la pantalla, y luego moviéndose hacia arriba y al llegar al borde superior repiten.

Después agregué la programación para que el corredor se pare sobre los terrones y suba con ellos.

Parte de la dificultad de todo esto es que Small Basic no maneja simultaneidad, es decir no tiene instrucciones para ejecutar dos procesos simultáneamente, como Alice o Scratch. Lo más cercano es utilizar el evento Tick del Timer. Se le indica al Timer que emita un Tick cada 160 milisegundos (ese fue el número que mejor me funcionó) y se coloca todo el código que maneja el movimiento de todos los elementos en el manejador del evento. Nuevamente, se dice fácil pero…

El juego funcionó bien localmente pero al ponerlo en línea me encontré que se maneja con Silverlight (el producto de Microsoft que compite con Flash de Adobe) y tiene algunas idiosincrasias que me obligaron a modificar el código fuente local.

De los tres lenguajes usados encontré que Small Basic puede ser el más complicado, de hecho el juego quedó menos terminado en este lenguaje que en los otros dos. En todo caso, el experimento fue todo un éxito, aprendí, me divertí, saqué conclusiones  y me quedaron ganas de seguir, así que ¡a programar!

  1. #1 by manuel on 11 August 2010 - 6:58 am

    Me recuerda mucho a vb6 :)

  2. #2 by Leonel on 11 August 2010 - 7:46 am

    Je je je je… creo que tienes razón. Yo creo que es un lenguaje con futuro, solo espero que Microsoft no deje de trabajar en el proyecto. Les ha ido bien, no se pueden quejar. Mucha gente lo ha bajado y lo están usando. Y esa opción de subir el programa al sitio web con solo presionar un botón es muy atractiva, lo mismo que la generación automática de ejecutables (cada vez que se compila y corre un programa el .exe se genera automáticamente).
    Un gran saludo!

  3. #3 by manuel on 12 August 2010 - 7:16 am

    solo espero que Microsoft no deje de trabajar en el proyecto
    ———————

    Pues es que ese es el problema, vb fue muy popular (y aún lo es en parte), pero tan pronto saca una nueva tecnología descontinua lo que ya tiene, y con vb no fue la excepción (ni que decir del visual j++), llegó .net y ya no hubó soporte para vb, murio el desarrollo de los ocx que a mi en lo personal me agradaban pues podias pasar funciones a tus propios programas, en .net lo veo más problemático, sigue sin gustarme tanto como vb, claro tambien hay muchas ventajas pero creo que no es ni la sombra de lo que fue vb.
    Ahora vb ya está oficialmente descontinuado por microsoft y se supone que proximas versiones de windows ya no se dará soporte a los programas desarrollados en en este ide, y que hacemos con nuestros trabajos?, me agrada la idea del ide jabaco (migrar de vb a java), pero aún está incompleto y últimamente está estancado, creo que terminaremos corriendo nuestros programas en algún emulador o algo así como ha pasado con los programas en borlandc que ya no funcionan en xp, snif.
    Por esa razón trato de evitar programar en algo que sea de microsoft, no tengo nada contra ellos pues son libres de tomar sus decisiones, solo que creo que no han sido las mejores, sería bueno programar en sistemas libres pues si alguno desaparece al menos hay probabilidades de usar un entorno alterno o de poder migrar nuestro trabajo, no siempre aclaro, saludos y gran trabajo por los temas de tu blog.

  4. #4 by sara on 25 June 2012 - 20:10 pm

    Hola, necesito ayuda con Small Basic. Es que me pusieron una tarea sobre este programa y necesito que me ayuden.

    Tengo que hacer un codigo (ya lo tengo hecho), pero debo guardarlo en un archivo, tengo que proporcional los medios para ver el contenido de ese archivo y que se pueda modificar.
    Como lo hago. Como hago que se vea el contenido y que se pueda modificar?

  5. #5 by Leonel on 26 June 2012 - 6:59 am

    Hola Sara,

    Small Basic tiene una opción en el menú que permite subir el código a Internet a una página especial que Microsoft provee, y una vez allí todo mundo puede verlo, bajarlo y editarlo.

    Por ejemplo, si quieres ver el código del primer programa que mencionamos en este artículo solo tienes que entrar en:

    http://www.smallbasic.com/program/?QJQ087

    El programa llegó allí mediante la opción de menú que dice “Publish”.

    Suerte!

  6. #6 by sara on 27 June 2012 - 16:35 pm

    Ok gracias

  7. #7 by anguie on 30 July 2012 - 15:31 pm

    nnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo lo puedo qreer es de lo maximo

(will not be published)