------------------------------------------------------------------- Práctica D2 .- Juego de la vida Autores: Alberto Herrero Hornero NIP: 462240 Diana Cachay Paredes NIP: 480007 Estudios: Ingeniería Técnica Química Grupo de Practicas: G09 Puesto: 1 Fecha: 10 de Diciembre de 2009 ------------------------------------------------------------------- Documentación ============= 1.- Introducción 2.- Tipos de Datos 3.- Módulos ------------------------------------------------------------------- 1.- Introducción ================ El juego desarrollado es una adaptación del juego de la vida con el formato especificado en el guión de prácticas. Cabe destacar estas características asumidas por el autor: 1.- la probabilidad será fijada en compilación, es decir, no es una variable del programa fijada por el usuario. Partiremos de una p (De creación de vida) de 0.7 como en el enunciado pone de ejemplo 2.- El tablero es de órden nxn, es decir, cuadrado. 3.- El tablero implementado, tiene dimensión 22x22. Esto es una decisión que ha facilitado la implementación de las funciones de siguiente estado en tanto que en la casilla (1,1) tanto arriba como a la izquierda (0.0) va a ser muerta. Esto puede corresponderse con lo que el enunciado indica como "la fila primera y última nunca tendrán vida". 4.- Hay un número máximo de pasos para terminar la ejecucion. este numero se determina en el codigo y esta puesto a 100. Igual que p es sólo modificable modificando el programa (decision). 5.- Se ha establecido la opcion de cortar la simulacion si se presiona q+intro. ------------------------------------------------------------------- 2.- Tipos de Datos ================== - Tipo Celula. Tipo enumerado con posibilidades de {VIVO ó MUERTO} - Tipo Tablero Array multidimensional de 22x22 de tipo célula - Tipo tpMalla Contiene malla que es de tipo tablero con la matriz y n con la dimensión (válida) de la matriz. ------------------------------------------------------------------- 3.- Módulos =========== * cargarMundo Parámetros: nombreFich String. Devuelve String Algoritmo: Algoritmo proporcionado por el profesor que sirve para pasar de un fichero de texto a una cadena de caracteres delimitada por |. Lo que hace el algoritmo es leer lineas (y almacenar longitud) e ir leyendo hasta final de fichero. NOTA: Corregido la necesidad de "Inicializar mundo" Funcionalidad: Devolver cadena a partir de fichero Modulos Usados: - * iniciarMundo Parámetros: mundo:tpMalla Algoritmo: De 0 a 21 pon todas las casillas muertas Funcionalidad: Inicializar nuestro mundo Modulos Usados: - * textoAMundo Parámetros: s String, var mundo:tpMalla Algoritmo: Mientras que no se llegue al final de la cadena hacer que mientras no se encuentre el delimitador | vaya inicializando el tablero con la cadena. Guarda la longitud y lo pone como n Funcionalidad: Inicializar el tablero desde la cadena Modulos Usados: iniciarMundo * generarMundoAleatorio Parámetros: var mundo tpMalla, dim integer, p real Algoritmo: Recorre todas las filas y columnas asignando a cada casilla vivo, si la funcion random (dev 0..1) saca un valor < que p ó mue- rto en caso contrario. Funcionalidad: Inicializar un tablero de forma aleatoria bajo una p Modulos Usados: iniciarMundo * llenado Parámetros: mundo tpMalla, mundoSalida tpmalla, x,y entero, numMin numMax entero, numNac: entero Algoritmo: Mirando las casillas de alrededor y con las condiciones de vida mediante dos bucles, se pone la casilla correspondiente (x,y) a viva o muerta en mundoSalida Funcionalidad: coloca en mundosalida, a partir de mundo la casilla con su estado corres. Modulos Usados: - * siguientePaso Parámetros: mundo tpMalla, mundoSalida tpmalla, x,y entero, numMin numMax entero, numNac: entero Algoritmo: Recorre toda la matriz para llenado. Funcionalidad: Devuelve toda la matriz en el estado siguiente Modulos Usados: iniciarMundo. LLenado. * pintaMundo Parámetros: mundo tpMalla Algoritmo: Recorriendo toda la matriz. Dibuja el tablero y un asterisco rojo en caso de que en esa posición (casilla) haya vida. Funcionalidad: Pinta la matriz por pantalla. Modulos Usados: * mundosIguales Parámetros: mundo1, mundo2 tpMalla, rsultado boolean Algoritmo: recorre filas y columnas y si hay alguno distinto resultado es falso Funcionalidad: dados dos mundos, resultado es la igualdad de ambos Modulos Usados: - * ejecutarPasos Parámetros: mundo tpMalla, mundoSalida tpmalla, x,y entero, numMin numMax entero, numNac: entero, maxPasos entero Algoritmo: mientras haya mundos distintos y no se pulse q+enter o no se haya alcanzado el numero máximo de pasos, ejecuta siguientePaso Funcionalidad: Ejecución del algoritmo siguientePaso Modulos Usados: siguientePaso, mundosIguales, pintaMundo * menuPrincipal Parámetros: finalizado booleano, x,y,z, enteros, pasoapaso booleano, maxpasos entero Algoritmo: Selecciona la opcion y cumple funcionalidad segun lo establecido en el guion pudiendo modificar los valores con opcion 2 Funcionalidad: menu de seleccion Modulos Usados: generarMundoAleatorio, ejecutaPasos, textoAmundo, pintaMundo ------------------------------------------------------------------- ---------------------------- (añadido tras someter) ---------------------------- 17:50:50 10/12/09 -> Segun los datos introducidos los ficheros son: G09P01D2 -> Los autores del trabajo son: Herrero Hornero, Alberto Cachay Paredes, Diana Nombres originales de los archivos entregados -> G09P1D2.PAS, G09P1D2.txt