Archive for July, 2010

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

Los programas en Scratch se forman con instrucciones que se acoplan unas a otras

Los programas en Scratch se forman con instrucciones que se acoplan unas a otras

Empecé programando en Scratch de MIT. Hay que recordar que en el MIT es donde trabaja Seymour Papert, el creador del lenguaje Logo y por ello de alguna forma Scratch se parece mucho a Logo, se puede decir que cada imagen en Scratch es como una tortuga de las de Logo y de hecho se comporta como tal.

Scratch viene con una extensa galería de imágenes listas para usar y además se pueden dibujar otras en una herramienta de dibujo incorporada. También es posible usar cualquier imagen de la computadora o bajada de Internet.

Empecé haciendo que el gato (que es la imagen que aparece al crear un nuevo proyecto) se colocara en el centro de la parte superior de la pantalla y de ahí se moviera permanentemente hacia la derecha o izquierda – controlado por las flechas del teclado – y hacia abajo, es decir nunca se está quieto. El gato sería “la bolita” de Rapid Roll pero sin opción a detenerse.

Luego agregué una barra horizontal de color azul y la programé para que se colocara en la parte de abajo en una posición aleatoria sobre el eje x y de ahí se moviera hacia arriba a una velocidad constante.

Aquí es donde las características de Scratch se empiezan a hacer evidentes. Cada imagen, que se llama “sprite” en inglés y “objeto” en español, tiene su propio espacio de programación totalmente independiente de los demás, la única opción de comunicación es enviar mensajes a todos con la instrucción “enviar a todos” (“broadcast” en la versión en inglés) con lo que se puede preparar un script en los otros objetos para que se ejecute cuando se recibe un mensaje particular.

Primera versión del juego

Primera versión del juego

Scratch provee al programador con instrucciones especiales que son “sensores” que sirven para evaluar condiciones como si una imagen está tocando cierto color, cual es la distancia hacia otro objeto, si está tocando un borde, etc. Usando estas instrucciones coloqué una condición al movimiento hacia abajo del gato, de tal forma que cuando estaba tocando azul (es decir tocando una de las barras que suben) en vez de caer sube a una velocidad ligeramente mayor a la de las barras. Con esto logré el efecto deseado de que el gato cae permanentemente a menos que esté sobre una barra azul.

Luego fue tan sencillo como copiar la barra azul cuatro veces y obtuve otras cuatro barras que se comportaban de la misma forma. Esta fue la primera versión que coloqué en línea.

Segunda versión

Segunda versión

Todavía no era un “juego” porque no había forma de “perder”. Entonces se me ocurrió agregar un mar que se bambolea en la parte de abajo, y cuando el gato llega al mar “se ahoga”, el gato debe evitar caer al mar porque al fin y al cabo a los gatos no les gusta el agua. Esta fue la segunda versión.

Pero aun faltaba un elemento más, algo que le diera emoción. Un tiburón saliendo del mar y subiendo con las fauces abiertas para tragarse al gato parecía buena idea, pero dos era todavía mejor. Uno de ellos aparece al principio del juego y el segundo se agrega 30 segundos después. Los tiburones se mueven un poco más rápido que las barras de forma resultan amenazantes para el gato. Agregué un efecto rápido de movimiento de los tiburones cuando “se comen” al gato, resultó divertido. Esta fue la tercera versión.

Versión final

Versión final

Al final me sentí muy satisfecho con el resultado. Pude haberle agregado un montón de cosas más, como un marcador, niveles, ¡más tiburones! Pero me conformé con subir las distintas versiones previas del juego al sitio de Scratch de donde quienquiera que desee agregarles funcionalidad puede bajarlas y trabajarlas, lo cual por cierto es algo grandioso de Scratch, uno pone sus proyectos en línea muy fácilmente y recibe comentarios de otros usuarios. Es una auténtica red social.

Además el experimento continuaba con Alice, tenía que hacer el mismo juego – o similar – con Alice. De eso les cuento en el próximo post.

3 Comments

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

La Osborne I, CP/M, 1981

En una computadora como esta (Osborne, CP/M, 1981) aprendí a programar

Programar juegos de computadora puede sonar divertido pero para nada es trivial. Un buen juego es un excelente ejemplo de ingeniería simple: fácil de usar, divertido, entretenido pero con mucho esfuerzo y trabajo bien pensado como soporte.

La primera vez que intenté programar un juego fue cuando estaba en el bachillerato y aprendimos el lenguaje Basic para la Osborne, una de las primeras PC “portátiles”. Se trataba del famoso “tic-tac-toe” también llamado “equis y ceros”. Recuerdo que vi la película “Juegos de Guerra” (buenísima, un auténtico clásico de computadoras) y me impresionó porque se supone que usan el juego de Equis y Os para enseñarle a la computadora que no hay forma de ganar siempre, y por eso intenté programar ese juego. Ni qué decir que no funcionó, pero me hizo pasar muchas horas en el laboratorio del colegio.

La computadora jugando Tic Tac Toe en la película War Games

La computadora jugando Tic Tac Toe en la película War Games

Desde entonces no había vuelto siquiera a intentar programar un juego hasta que empecé a usar los lenguajes para niños Alice, Scratch y más recientemente Small Basic. Como parte de una pequeña investigación sobre esos lenguajes decidí que era una buena idea intentar hacer el mismo juego en los tres ambientes y resultó divertido y revelador.

El juego que elegí como modelo se llama “Rapid Roll” que juego en mi celular de vez en cuando y es sobre una bolita que va cayendo y uno debe hacer que aterrice sobre barras que suben de forma que no llegue nunca al suelo. El juego se va haciendo más rápido y se complica pero es bastante entretenido.

Claro que mis versiones no quedaron iguales y ni siquiera se parecen tanto al “Rapid Roll” original, pero algo que aprendí de esto es que uno disfruta mucho jugando los juegos que uno mismo programa, así que también fue un experimento divertido.

De la investigación puedo comentarles que los tres lenguajes usan paradigmas de programación ligeramente distintos. Alice es muy cercano a lo que conocemos como “orientado a objetos”, Scratch es un lenguaje procedural donde cada figura se programa independientemente y Small Basic utiliza objetos pero solo como un mecanismo para acceder a ciertos recursos: la pantalla gráfica es un objeto, lo mismo que la de texto, el sistema de archivos y no puede tener más de un objeto de la misma clase.

Alice y Scratch implementan muy bien los mecanismos de ejecución simultánea mientras que en Small Basic lo natural es que todo vaya a un solo hilo de proceso. Y todavía hay más, pero mejor paso a contarles cómo me fue y qué pude lograr, pero eso será en el siguiente post.

9 Comments

Reactos, el sucesor de Windows

 

El escritorio de ReactOS

El escritorio de ReactOS

Por Juan Manuel
Editado por Leonel

ReactOS (React Operating System) es un proyecto de código abierto para crear un sistema operativo compatible con aplicaciones y controladores de Windows en general. Esto significa que se podrá instalar en una computadora común y corriente y podrá correr todos los programas que le sirven a un usuario de Windows.

Parte de su código está basado en el proyecto Wine, que es un esfuerzo similar para implementar todo el API de Windows (Application Programming Interface, el conjunto de funciones que hacen correr los programas de Windows) en ambientes Linux, de forma que Wine también se beneficia de los avances de ReactOS.

La historia

La utilidad de los sistemas operativos de Microsoft es indiscutible. Sin embargo, el tema de las licencias – o la falta de ellas – siempre significó una dificultad más o menos importante. Las alternativas existentes nunca fueron totalmente compatibles y ni siquiera estaban ampliamente disponibles.

Por ello desde el principio siempre flotó en el aire la idea de un sistema operativo 100% compatible y 100% libre. Muchas personas sabían que esto era posible.

En 1996 un grupo de programadores comenzaron un proyecto llamado Freewin95 el cual consistía en implementar un clon de Windows 95 pero completamente libre, sin embargo éste atravesó por una serie de problemas cuando solo se había implementado la capa compatible con MS-DOS. Para 1997 el proyecto no había lanzado ninguna versión así que los miembros del proyecto coordinados por Jason Filby lo reiniciaron completamente y cambiaron el núcleo del sistema compatible con MS-DOS y de ahí en adelante lo basaron en uno compatible con Windows NT ya con el nombre actual (ReactOS).

El cambio de MS-DOS a Windows NT fue una buena idea ya que este último fue el primer sistema de Microsoft que no corría sobre DOS, de la misma forma en que las versiones más recientes – XP, Vista, etc. – tampoco necesitan más de DOS.

¿Clon de Windows?

Definitivamente que no. ReactOS es un sistema operativo compatible con Windows. Una importante diferencia es que no se trata de un sistema cerrado sino abierto (open source) en el que cualquier persona tiene acceso a revisar los fuentes en caso de errores o funcionamiento inadecuado, lo cual no sucede con su contraparte comercial de código cerrado.

También es importante tomar en cuenta que no se necesita ninguna licencia para instalar y ejecutar ReactOS.

Situación actual

Después de 10 años trabajando en el desarrollo del producto, ReactOS se encuentra actualmente en su fase de pruebas alfa, es decir, en pruebas que se realizan por usuarios en ambientes controlados por los desarrolladores. Las razones son varias, pero vamos a comentar dos como principales. Primera: el código del modelo que se está intentando copiar (Windows) es cerrado, de forma que no hay manera de revisar cómo ha sido implementado, el alcance de sus funciones y el comportamiento exacto de cada porción de código. Es como intentar emular una caja negra, el comportamiento debe ser igual pero la única forma de conseguirlo es probando qué resultados se obtienen para el mayor rango posible de entradas. Segunda: trabajar en un sistema operativo es una tarea increiblemente compleja y los programadores que la realizan ofrecen su tiempo de forma voluntaria sin ningún cargo, lo cual no significa que no estén comprometidos con el proyecto, pero no necesariamente es tu tarea prioritaria.

La primer versión de ReactOS vio la luz el 25 de enero de 2004 y la más reciente (0.3.11) el 16 de diciembre de 2009, se espera que pronto se llegue a la versión 0.5 ya considerada como beta, es decir, liberada para pruebas fuera de los ambientes controlados por los desarrolladores.

¿Desea probarlo?

Estudiantes, investigadores, centros educativos, laboratorios, etc., que deseen probar ReactOS pueden obtenerlo en su dirección oficial: http://www.reactos.org/ que contiene una sección de descarga. Se recomienda utilizar algún paquete de virtualización – como VirtualBox -, instalar una máquina virtual y trabajar en ella, de forma que cualquier fallo afecte lo menos posible.

Se puede seguir las instrucciones que se proveen aquí:

http://reactos.wordpress.com/2008/11/12/instalar-reactos-037-en-virtualbox-sobre-windowsxp/

http://reactos.wordpress.com/2008/11/15/instalar-reactos-037-en-virtualbox-sobre-windowsxp-ii/

Puede que el título de “sucesor de Windows” suene un poco ambicioso para ReactOS, pero en el fondo, y pensándolo un poco más allá de lo obvio, hay que reconocer que el modelo de software libre y abierto sobre el que se construye ReactOS bien puede ser el verdadero sucesor del modelo comercial detrás de Windows.

9 Comments