PRÁCTICA 2 DE DISEÑO: “JUEGO DE LA VIDA” Autores: Pablo Gaspar Lasanta. Elena Gómez Vélez. Se ha utilizado un vector bidimensional, ya que se trabaja con una matriz cuadrada, llamado tptablero que será de tipo booleano. A continuación, se han definido varios procedimientos para las diferentes operaciones que se dan a lo largo del programa y que luego serán llamados en el programa principal. Dichos procedimientos han sido los siguientes: - Procedure matriz: Se ha pasado por referencia el parámetro tamano para devolver un valor en él, que nos dirá el tamaño que va a tener el lado del tablero, que será una matriz cuadrada de entre 4 y 20. Para indicar esto, se ha utilizado el esquema de iteración REPEAT-UNTIL. Este bucle se repetirá hasta que se cumpla la condición de que el tamaño del tablero sea un valor no menos de 4 y no más de 20. - Procedure probabilidad: En la declaración de parámetros se han colocado dos variables, prob de tipo real y tamano de tipo integer, que se pasan por valor, y el parámetro tablero de tipo tptablero que se pasa por referencia para que sea de tipo salida. En este procedimiento se pide la probabilidad (entre 0 y 1) de que una célula esté viva, y ese valor se guardará en la variable prob. Se utiliza el esquema condicional IF-THEN-ELSE para saber si el valor aleatorio, llamado num, que nos da el Random es menor o igual a la probabilidad elegida por el usuario, si es así, se le asigna a la posición del tablero en donde estamos TRUE o sino FALSE. Para recorrernos las posiciones interiores del tablero se ha utilizado dos bucles FOR-DO. Las posiciones de los bordes no las recorremos porque no es posible ahí la vida de las células (es una regla del juego). El Randomize se coloca antes de estos dos bucles para que se inicialize el generador del número aleatorio que nos ofrece Random. - Procedure dibujartablero: En este procedimiento se vuelve a utilizar dos bucles FOR-DO, para recorrer la matriz entera y se comprueba si la posición del tablero en donde se está en ese momento es TRUE, que en ese caso se escribe una [v] indicando de esta manera que esa célula está viva, o si es FALSE una [m] indicando que está muerta. En la declaración de parámetros de este procedimiento se han puesto por referencia la variable tablero de tipo tptablero y por valor la variable tamano de tipo integer. - Procedure nuevotablero: Se recorre con dos bucles FOR-DO el interior de la matriz y se inicializa a cero la variable contadorvivas, que es una variable de tipo integer que nos contará las células vivas que haya. Dada una posición en el interior de la matriz, recorremos, de nuevo utilizando dos bucles FOR-DO, sus 8 posiciones de alrededor además de a ella también, y se comprueba si es TRUE para que así la variable contadorvivas se incremente a uno cada vez que haya una célula viva alrededor. Entonces si la célula en la que se está mirando está viva (TRUE), se le resta una unidad a contadorvivas para que no cuente como célula viva la de la posición que estoy mirando. Según las reglas del juego (por defecto son x=3, y=2, z=3) utilizando de nuevo el esquema iterativo IF-THEN-ELSE se dirá si en el nuevo tablero (tablero2) esa célula seguirá viva, seguirá muerta, vivirá o morirá. - Se ha implementado la function cargar_mundo que podrá darse uso al elegir en la opción de menú del juego: Cargar Estado Inicial. - En el Programa Principal: Se llamarán a los procedimientos que se han descrito anteriormente. Se podrá elegir las opciones del menú del juego. Se ha utilizado el esquema CASE OF para que según la opción elegida se haga una cosa u otra. Por ejemplo, si la opción ha sido la de Crear Mundo, se llamará a los procedimientos de: matriz, probabilidad y dibujartablero. Si la opción ha sido la de Ejecución se utiliza el esquema condicional IF-THEN y se le pide al usuario si quiere cambiar las reglas del juego, si quiere el modo de ejecución “Paso a paso” o el modo “Sólo Resultados”, y cuántos turnos se van a realizar. Se utiliza también un bucle REPEAT-UNTIL donde se llaman dentro de este bucle a los diferentes procedimientos y se acaba hasta que el número de turnos llegue al valor de cero. El juego termina con la opción Salir. ---------------------------- (añadido tras someter) ---------------------------- 20:15:21 11/12/09 -> Segun los datos introducidos los ficheros son: G03P02D2 -> Los autores del trabajo son: GASPAR LASANTA, PABLO GOMEZ VELEZ, ELENA Nombres originales de los archivos entregados -> VIDAG03P2.PAS, VIDAG03P02.txt