Datos personales de los autores de la práctica: - Jorge Salas Ortega. (526047) - Víctor Méndez Arnal.(525248) Programa realizado: Juego_De_La_Vida. Constantes definidas: - espacios: Ha sido utilizada en los procedimientos de crear el tablero y sirve para mantener una distancia constante en el proceso de dibujar la cuadrícula. - max: Sirve para marcar el punto máximo de datos que puede tener el juego. Tipos de datos: Hemos definido dos tipos de datos estructurados: - Tmatriz es un vector de dos dimensiones que almacena en cada una de sus celdas un dato de tipo booleano. En cada una de las celdas se almacena el estado de cada célula asignándole true si la célula está viva y false en el caso de que esté muerta. - Tlista es un registro con dos campos: +V: Es de tipo Tmatriz. +n: Es de tipo integer e indica el número de celdas que son utilizadas. Módulos utilizados: * Procedimientos: +procedure escribirhueco: Sirve para pintar los huecos de la cuadrícula. Consta de un parámetro de entrada de tipo caracter que se le manda desde otro módulo para que lo pinte. +procedure escribirlinea: Sirve para escribir una fila completa del tablero. Se le mandan tres parámetros de entrada: unos de tipo integer que marca cuantos caracteres tiene que haber en una fila de la cuadrícula y carh y carv de tipo caracter que reciben cual es el carácter que hay que pintar. +procedure escribirmasmenos:Sirve para pintar la fila de la cuadrícula que está compuesta de mas y de menos. En el se llama al procedimiento escribirlinea y se le manda el número de carácteres que tiene que pintar y los carácteres '+' y '-' que son los que tiene que dibujar. +procedure escribirespacios:Sirve para pintar la fila de la cuadrícula que está compuesta de espacios y palos. En el se llama al procedimiento escribirlinea y se le manda el número de carácteres que tiene que pintar y los carácteres ' ' y '|' que son los que tiene que dibujar. +procedure escribir fila: Es el procedimiento que dibuja toda la cuadrícula y consta de un parámetro de entrada de tipo integer que marca el número de filas que tiene que pintar. En el módulo se llama a los procedimiento escribirmasmenos y escribirespacios mandándoles la cantidad de filas que tienen que pintar. +procedure pedirtamanio: En el se le pide al usuario el tamaño de la cuadrícula o lo que es lo mismo el número de células que quiere que haya. Le pedimos el lado del tablero ya que el tablero va a ser de forma cuadrada. +procedure dibujatablero: Este procedimiento dibuja la cuadrícula del tamaño que quiere el usuario sin pasarse de las restricciones de las normas del juego. Se le manda un parámetro de tipo entero que es el tamaño del lado del cuadrado que va a dibujar. +procedure pedirreglas: En el se le pide al usiario que introduzca mediante el teclado las células vecinas vivas que tiene que tener una célula para nacer asi como el intervalo de células vecinas para permanecer viva o morirse. Estos datos son enviados al programa principal ya que hemos declarado los parámetros de entrada y salida. +procedure pedirprobabilidad: En el se declara un parámetro de entrada y salida en el que se implementa la probabilidad que ha escogido el usuario para que esten vivas o muertas las células en la creación de un mundo. +procedure estadocelula: En el se introducen los datos en el vector del estado inicial de cada célula. Utiliza un parámetro de entrada de tipo entero que marca el número de células que hay; otro de tipo real, que es la probabilidad que ha introducido el usuario y un parámetro de entrada y salida que es de tipo tlista en el que se devuelve el estado de las células. +procedure pedirturnos: En el se le pide al usuario el número de turnos que quiere que se ejecuten y se devuelve ese valor mediante un parámetroi de salida. +procedure menu: En el se pinta el menú del juego y se le pide al usuario que elija entre las opciones. La opción elejida del usuario se manda al programa principal con un párametro de salida. +procedure pedirmodo: En el se le pide al usuario el modo en el que desea ejecutar el juego y se devuelve la opción elejida al programa principal con un parámetro de salida. +procedure casillas exteriores: Se introduce en las casillas exteriores el valor false que marca que todas ellas estan muertas como marcan las reglas del programa y se devuelve el vector con los cambios realizados mediante un parámetro de salida. También se utiliza un parámetro de entrada de tipo entero que indica cuantas células hay. +procedure juego: Mediante tres parámetros de entrada, se le mandan las reglas que ha elegido el usuario. Con estas reglas, mediante estructuras condicinales, le asignamos a cada célula el nuevo valor que va a tener en el siguiente turno. Una vez configurado el valor de cada casilla, se devuelve el vector con un parámetro de salida. +procedure pintacelulas: Sirve para dibujar en el tablero las células, dibujamos un # en el caso de que la célula esté viva, y un @ en el caso de que esté muerta. +procedure informacionjuego: Sirve para mostrar por pantalla los símbolos de los que dispone cada célula asi como los turnos. *Funciones: +function generaaleatorio: Utimlizamos la función random para generar un número aleatorio entre uno y diez que nos sive para generar el estado de cada célula al inicio de un nuevo juego. +function probabilidad: Sirve para devolver la probabilidad de que un célula esté viva o muerta llamando a la función generaaleatorio y transformando el valor que devuelve en un intervalo entre 0 y 1. +function compara: Compara el valor que nos ha salido de la función probabilidad con el valor que nos introduce el usuario en el programa principal y le asisnamos un valor booleano a cada célula dependiendo si está viva o muerta. +function casilla: Nos devuelve un entero que significa el número de células vecinas vivas que tiene cada célula. Programa principal: Declamos 9 variables de tipo integer que nos sirven para: i: la utilizamos como contador. lado: es utilizada para almacenar el tamaó del tablero. turno: Sirve para almacenar el número de turnos de cada partida. opcion: Almacena la opción elegida en el menu por el usuario. X,Y,Z: Almacenan las reglas del juego que ha elegido el usuario. Modo: Almacena el modo de juego que ha elegido el usuario aux:Variable auxiliar que utilizamos para contar los turnos. Una variable de tipo real: proba: Almacena la probabilidad de que una célula esté viva o muerta. Una variable de tipo Tlista: p: Es el vector de dos dimensiones donde almacenamos el valor de cada célula. Después de la llamada al procedimiento menu, utilizamos una estructura case of para que el programa ejecute la opción del menú que ha elegido el usuario. En cada opción realizamos las llamadas correspondientes a cada uno de los módulos necesarios para su correcto funcionamiento. En la opción de ejecución, hemos utilizado instrucciones condicionales if then else para abarcar los diferentes casos de ejecución que son el modo paso a paso y el modo solo resultado. La opción 3 del menú no la hemos implementado al no entender lo que se pide en el enunciado. ---------------------------- (añadido tras someter) ---------------------------- 12:28:01 11/12/09 -> Segun los datos introducidos los ficheros son: G13P05D2 -> Los autores del trabajo son: SALAS ORGTEGA, JORGE MENDEZ ARNAL, VICTOR Nombres originales de los archivos entregados -> juego de la vida.PAS, juegodelavida.txt