PRACTICA DE DISEÑO NUMERO 2. JUEGO DE LA VIDA GRUPO 16 PUESTO 05 TOMAS GUILLEN MONGE 551299 ALFREDO LEZAUN ANDREU 550716 * EXPLICACION DE LOS TIPOS DE DATOS UTILIZADOS T_y: Es un array de booleans que sera utilizado como tablero de juego. Su rango es de 0 a 21 para que en la comprobacion del numero de vecinas no se salga de rango T_x: Es un array de T_y que le da la segunda dimension (convierte el tablero de lineal a 2 dimensiones. T_Vy: Es un array de enteros qdel mismo tamaño que el tablero de juego. Su rango es de 1 a 20.Almacena el numero de vecinas de cada casilla en cada momento. T_Vx: Es un array de T_Vy que le da la segunda dimension (convierte el tablero de lineal a 2 dimensiones. T_Condiciones: Es un registro. Dentro de el podemos encontrar todas las posibles opciones que el programa necesitara. Al estar toda la informacion contenida en el mismo sitio, el trafico de variables entre las distintas partes del programa es mucho mas claro. Tamano: Array numérico de rango los valores posibles para el tamaño del tablero. X,Y,Z: Son datos enteros que manejan las condiciones de nacimiento y supervivencia de las casillas. Step: Dato booleano que almacena si el programa sucedera todo seguido, o paso a paso pulsanbdo intro. Probabilidad: Dato real que almacena la probabilidad de que una casilla este viva al generar un tablero aleatorio. Menu: Dato entero que almacena la eleccion del usuario respecto de la parte del programa a ejecutar Turno: Dato entero que almacena informacion sobre el turno de cada momento. Turnos: Dato entero que almacena informacion sobre el numero de turnos que deberan ejecutarse. T_Tablero: Es un registro con toda la infrmacion necesario para el juego. Casillas: Dato de tipo T_x. Dado que T_x era la segunda dimension del tablero, Casillas es un tablero cuadrado de booleans Vecinas: Dato de tipo T_Vx. Dado que T_Vx era la segunda dimension del tablero, Vecinas es un tablero cuadrado de enteros Condiciones: Dato de tipo T_Condiciones. Almacena todas las condiciones. * EXPLICACION DE LOS MODULOS EN LOS QUE ESTA DIVIDIDO EL PROGRAMA PROCEDURE Retardo; Es un procedimiento que se ocupa de escribir una serie de asteriscos del mismo color que el fondo para que en la ejecucion automatica se vean todos los pasos un tiempo suficiente. PROCEDURE ResetT; Es un procedimiento que pone todas las casillas del tablero en posicion FALSE. Se le pasa el tablero por referencia para que pueda modificarlo FUNCTION cargar_mundo; Lee de un fichero compuesto de unos y ceros y lo convierte en un string con toda la informacion FUNCTION PreguntaEntero; Le pide al usuario un numero entero y se asegura de que el dato introducido es correcto. Se utiliza cada vez que es necesario que el usuario introduzca un numero entero FUNCTION PreguntaReal; Le pide al usuario un numero real y se asegura de que el dato introducido es correcto. Se utiliza cada vez que es necesario que el usuario introduzca un numero real PROCEDURE DatosAleatorio; Es un procedimiento que pide al usuario los datos necesarios para ejecutar la parte del juego: Generar tablero PROCEDURE Datos; Es un procedimiento que pide al usuario los datos necesarios para ejecutar la parte del juego: Ejecutar tablero cargado FUNCTION Aleatorio; Mediante la funcion randomize genera un numero que dividido por mil y tras ser comparado con el dato de probabilidad de vida que en ese momento posee el juego, da vida o muerte a cada una de las casillas. Es llamada todas las veces que hay que generar una casilla aleatoriamente PROCEDURE Generador; Utilizando tantas veces como sea necesaria la funcion anterior, genera un tablero nuevo, aleatoriamente. Se le pasa el tablero por referencia para que pueda modificarlo PROCEDURE CuentaVecinas; Es una funcion que cuenta el numero de vecinas vivas de cada una de las casillas. Rellena una matriz de enteros de tipo T_Vx. Como no tiene que modificar el tablero, este no se le pasa por referencia. PROCEDURE MuestraTablero; Es un procedure que se encarga de mostrar por pantalla el estado del tablero tras cada turno. Como no tiene que modificar el tablero, este no se le pasa por referencia. PROCEDURE Cambiador; Este procedure se ocupa de, siguiendo las reglas del juego, modificar cada una de las casillas para conseguir el estado del siguiente turno del juego. Como Modifica el tablero, este se le pasa por referencia. Function leeChar; Esta funcion recibe por referencia el tablero, y leyendo el string generado por cargar mundo rellena el tablero de trues y falses de acuerdo al archivo de entrada. PROCEDURE Juego; Este procedure recibe el Tablero por referencia. Es el encargado de la ejecucion de los turnos deseados por el usuario. PROCEDURE JuegoCargado; Este procedure recibe el Tablero por referencia. Es el encargado del juego cuando el usuario elige cargar mundo. PROCEDURE JuegoAleatorio; Este procedure recibe el Tablero por referencia. Es el encargado del juegocuando el usuario decide generar un nuevo mundo. PROCEDURE MENU; Es el encargado de mover el juego mientras el usuario no decida darlo por terminado. Se ejecuta cada vez que una de las tres opciones anteriores concluye, y al principio del juego. PROCEDURE GRAL; En el se ejecuta la funcion randomize ya que esta solo debe ser ejecutada una vez, y este procedure solo se ejecuta una vez. En el se crea la variable Tablero qu es la utilizada en todo momento. ---------------------------- (añadido tras someter) ---------------------------- 23:41:59 11/12/09 -> Segun los datos introducidos los ficheros son: G16P05D2 -> Los autores del trabajo son: Guillen Monge , Tomas Lezaun Andreu, Alfredo Nombres originales de los archivos entregados -> D2GuillenLezaunG16P05.PAS, TextoD2GuillenLezaun.txt