Con Velneo se pueden hacer muchas cosas!!!

Hace poco, revisando la Wikipedia, me encontré con este artículo. Me pareció interesante desde el principio  y hoy mismo lo volví a revisar y me propuse dejar a un lado los programas habituales de gestión y dedicarle un tiempo a intentar simular dicho juego.

En principio , la idea se basa en una única tabla, VMAESTROS (aprovechando el almacén de objetos, :-)) que para que los cálculos fueran más ágiles, la hice en memoria.

Incluye cuatro campos además del código:

  • FILA , numérico de longitud 1, para guardar la fila en la que está la ficha
  • COLUMNA, numérico de longitud 1, para guardar la columna
  • VIDA, booleano, para indicar si la célula está viva ( valor 1 ) o muerta (valor 0)
  • SIGUIENTE, también booleano, que me dará el estado de la célula en el siguiente “turno”

De la tabla, sólo conservo el índice código y creé otro formado por la terna FILA-COLUMNA que me servirá para posteriores cálculos además de para mostrar las fichas con el objeto visual casillero, organizado por filas y columnas como si fuera una matriz.

Las premisas del juego so:

  • Una célula muerta con exactamente 3 células vecinas vivas “nace” (al turno siguiente estará viva).
  • Una célula viva con 2 ó 3 células vecinas vivas sigue viva, en otro caso muere o permanece muerta (por “soledad” o “superpoblación”).

El estado siguiente  de una célula  en la posición fila F columna C de su estado inicial y de los estados de las 8 células que le rodean

Trama de las celdas

Luego, el próximo estado de CF ha de depender de otros 8 valores y será calculado por la premisa primera del juego o de la segunda, dependiendo del estado de VIDA  de CF inicial. Y todo ha de calcularse para cada una de  las células.

Para eso utilicé el campo%SIGUIENTE%  en el que podré calcular el valor de CF en la siguiente “jugada”.

proceso recálculoEn el proceso se recorre la lista en modo lectura/escritura, para modificar el campo SIGUIENTE  llamando a la función TOYVIVA  a la que le pasamos los parámetros FILA, COLUMNA y VIDA.

función vida

Calcula el estado siguiente de la celda CF

Si el “no está viva” (parámetro _estado=0), entonces se ataca la segunda premisa y se ve el estado de las otras 8 células que le rodean y se cuentan cuántas de ellas viven. Si viven 3, se retorna como valor de función 1, es decir, en la siguiente jugada la célula estará viva.

Si “vive” (parámetro _estado=1) vamos a la primera premisa pero esta vez inicializamos el contador no a 0 como antes sino a -1 dado que la célula CF ya está viva pero no la podemos contar. Si encontramos que hay 2 ó 3 vivas seguirá viva y si no, morirá en la siguiente jugada.

Una vez la función me devuelve todos los valores, vuelvo a recorrer en el proceso la lista para pasarle al campo VIDA  el valor guardado en SIGUIENTE y volver a poner este último a cero.

Para que fuera algo más vistoso en cuanto a funcionamiento, creé dos menús

  • MENU INICIAL  en el que aparece el casillero para que podamos dar vida a las células que queramos con un click en cada casilla o ponerlas todas a cero. Todas las fichas se crean al iniciarse el programa en el proceso llamado desde el menú AUTOEXEC  con el proceso VMAESTROS (que genera una “matriz! de 40X40) pero que podeis cambiar por el llamado GENERA  que pide el número de filas y columnas a generar
  • MENU VIDA en el que se han sincronizado dos casilleros iguales, pegados uno encima del otro con una variable global booleana VISIBLE que hace los efectos del refresco tras los recálculos. A su vez, para que no se tenga que dar a una opción de menú cada vez que se quiera ver la evolución dinámica del juego, en este menú he puesto una opción texto estático en vertical llamada Recalcular, con la opción Timer, cada cuantos en 1, para que se repita cada vez que el timer del menú ( puesto cada 2000 milisegundos)

Espero que os guste  o que al menos os entretenga.

Para los foreros de Velneo , el enlace de descarga en el foro y para los que no , este enlace de descarga externa.

Un saludo.

Anuncios

Acerca de Agustin
Velneoadicto. Tuve la grandísisma suerte de que me enseñaran los más grandes: Juan Muñoz-Cobos , Jesús Arboleya y Jesús Inclán..

4 Responses to Con Velneo se pueden hacer muchas cosas!!!

  1. Javier Duran says:

    Buen articulo si señor.

    Ahora solo te falta pasarlo a Velneo V7 y hacerlo una OpenApp 😀

  2. Francisco Hoyos says:

    Jajajajaja me lo estoy pasando en grande. He puesto un bloque de 9×9 casillas vivas y darle a la opción Recalcular mola como van cambiando y acaban llegando a un punto de equilibrio formando figuras de lo más chulas. Una pasada de jueguito.

  3. agustin says:

    ¡ SOMOS UNOS FRIKIS! Nos contratan para la próxima temporada de The Big Bang Theory fijo. ja ja

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: