El+Juego+de+la+Vida

= = Volver a San Andrés 2010-01 =El juego de la vida= El juego de la vida es un juego de cero jugadores (no interviene el usuario después de iniciado el juego) creado en 1970 por John Conway. Es un ejemplo de un autómata celular y tiene todas las características de una Máquina Universal de Turing, es decir, todo lo que se pueda computar, se puede hacer con el juego de la vida. (saber más)

toc =Proyecto=

Integrantes
Sara Rodríguez Sherry Lee Espinosa Samer Llamas

Programa
Clic sobre una celda vacía para crear una célula Clic sobre una célula para eliminarla Clic derecho para iterar (avanzar una unidad de tiempo)

media type="custom" key="21755990"

Código fuente


=//Enunciado del problema//= // EL JUEGO DE LA VIDA // El juego de la vida es un juego de cero jugadores (no interviene el usuario después de iniciado el juego) creado en 1970 por John Conway. Es un ejemplo de un autómata celular y tiene todas las características de una Máquina Universal de Turing, es decir, todo lo que se pueda computar, se puede hacer con el juego de la vida. Consta de un tablero con casillas infinitas en todas las direcciones, en cada celda puede haber una célula y ésta tiene 8 vecinas. Cada célula puede estar viva (generalmente negra) o muerta (generalmente blanca) y su estado cambia en unidades discretas de tiempo (saltos de tiempo) de acuerdo al estado de sus vecinas y el estado del tablero se actualiza al mismo tiempo. El estado de cualquier célula está determinado por las siguientes reglas: Se han descubierto muchos patrones de comportamiento en el juego de la vida, algunos estáticos, otros dinámicos, osciladores, etc. Realice un programa que simule el juego de la vida. El programa debe contar con dos opciones de generación de la población inicial: Además debe recibir el número de generaciones que se quiere calcular y mostrar el resultado de dos formas: Para comprobar el funcionamiento cargue desde archivo patrones (consultar en Internet) sobre los que sepa de antemano su comportamiento y verifique que se cumpla. =//Documento entregado//= Para comprender lo realizado empezaremos por explicar un poco lo que es el juego de la vida y el autómata celular que es su función principal. **El Juego de la Vida** es una teoría matemática que asombra por su sencillez. Es objeto de intensas investigaciones y sus aplicaciones posibles pueden ser de índole teórica o eminentemente práctica, como la reproducción de células cancerígenas, la proliferación de árboles infectados en un bosque, la propagación de incendios o el crecimiento de cristales. Un **autómata celular** viene a ser la abstracción matemática de los procesos celulares que observamos en los seres vivos y se puede definir como un sistema dinámico que consta de dos elementos: un espacio celular y unas reglas de comportamiento. Para desarrollar el juego de la vida se tiene que tener en cuenta características básicas para su funcionamiento las cuales son: Estos factores son los pilares del y reglas que rigen el juego de la vida. A demás te estos factores también se tiene que tener en cuenta aspecto como la simulación de un tablero infinito, la capacidad de brindar una cantidad específica de saltos de tiempo o generaciones. Las condiciones para este problema son que se cumpla con las reglas básicas descritas antes, ya que de otra forma el juego no tendrá éxito. Ya que es un juego de 0 jugadores, las únicas entradas que tendría el juego serian la creación de un campo de células, dicho de otra manea que el usuario ingrese las células vivas donde desee y la segunda entrada seria el número de generaciones o saltos de tiempo desea. La salida o resultado del problema sería mostrar en pantalla el resultado de aplicar las normas del juego el numero de generaciones que el desee. Para el diseño del algoritmo se utilizaron 6 procedimientos y 2 funciones además de 2 clases. Se inicio con la clase llamada tablero dentro de la cual se ejecutan la mayoría de las funciones y procedimientos que se desarrollaron, esto la convierte en la base del algoritmo. Dentro de la clase tablero luego de crear el tablero se utiliza el procedimiento “__**mouse**__” e l cual se diseño para llenar el tablero a partir de las casillas donde se presione el mouse. Posterior a esto se utiliza el procedimiento __**“display”**__ el cual solo se encarga de visualizar en pantalla la matriz que se llena con el procedimiento anterior. Partiendo de la necesidad de determinar los vecinos de una célula cualquiera creamos la función “**vecinos**” la cual retorna uno de los 8 vecinos posibles de una célula cualquiera, esta función recibe una posición a la cual se quiere determinar sus vecinos retorna los mismos. Para complementar esta función también se crea la función “__**verificación**__” la cual determina si la posición del vecino que resulta es válida, en otras palabras si esta dentro del tablero asignado o no. Esta función trabaja con una condición básica la cual es que la posición i del vecino encontrado no valla más allá de las filas del tablero, y la posición j del vecino no exceda el número de columnas del tablero. Para realizar las funciones lógicas del problema, es decir para que se cumplan con las reglas básicas creamos el procedimiento “__**cambio de estado**__”, el cual verifica el contenido de alguna posición del tablero, a partir de esto y de la información brindada por los otros procedimientos y funciones analiza y cumple las reglas del algoritmo, convirtiéndose así en el procedimiento que cambia el contenido del tablero en otras palabras da vida o muerte a las células. Finalmente creamos un procedimiento que encajara y utilizara la información de todos los procedimientos y funciones creadas, lo llamamos “__**validación**__” y se encarga de ordenar y utilizar adecuadamente la información adquirida hasta este punto. En conclusión se podría decir que se dividió el problema en dos aspectos primero la creación de las funciones y procedimientos que se necesitaban par una buena ejecución del juego de la vida y una segunda etapa que fue la implementación y organización de la información brindada por los procedimientos y funciones anteriormente creados. Póster
 * //Una célula muerta con exactamente 3 células vecinas vivas nace o vive en el siguiente turno o salto de tiempo//
 * //Una célula viva con 2 o 3 vecinas vivas, sigue viva. En otro caso muere por superpoblación o soledad.//
 * //Generación de una población aleatoria//
 * //Leer una población inicial desde un archivo//
 * //Solo el estado de la población final, luego de todas las generaciones//
 * //Paso por paso, cada iteración del tablero//
 * INTRODUCCION.**
 * ANALISIS.**
 * //Una célula muerta con exactamente 3 células vecinas vivas nace o vive en el siguiente turno o cambio de tiempo.//
 * //Una célula con 3 o 2 vecinas vivas, sigue viva. En otro caso muere por sobrepoblación o soledad.//
 * ESPECIFICACIONES DEL PROBLEMA.**
 * //Condiciones://
 * //Entradas://
 * //Salida://
 * DISEÑO DEL ALGORITMO.**//