El juego de la vida Nombres: - Rillo Bautista, Darío 610083 - Vargas Sarría, Carlos 575972 Al inicio del programa se define una constante M igual a 20, extensión máxima del tablero(matriz de 20x20). En el campo type, se define la matriz mediante el array Tmundo, de tipo boolean. A continuación se definen los módulos que se van a utilizar en el programa. El primero es la función Cargar_Mundo, que carga un fichero y devuelve un string(una cadena de caracteres). Después se define la función aleatorio, de tipo real. Ésta función se utiliza después para el procedimiento generarMundo para generar números aleatorios que determinen si una célula está viva o no. Procedimiento generaMundo, toma por referencia una variable mundo del tipo Tmundo(matriz) y una variable N, que indica la dimensión. Dentro del procedimiento, se utilizan las variables i y j de tipo integer para recorrer las filas y las columnas de la matriz. la variable probabilidad se utiliza para indicar la probabilidad que hay de que una célula esté viva o muerta(true o false). La variable vida toma el valor real de la función aleatorio y se compara con la probabilidad para indicar si la célula es true o si es false. El procedimiento ejecución toma como parámetros de referencia una variable mundo de tipo Tmundo, y una variable N de tipo integer que guarda la dimensión de la matriz. Para este procedimiento se definen otros parámetros, en este caso de entrada, x,y,z, de tipo integer, que guardan las reglas del juego. El procedimiento utiliza las variables i,j,k,q, de tipo integer utilizadas para recorrer la matriz y una variable numVecinos, también de tipo integer que se compara con las reglas del juego para determinar si una célula está viva(true) o está muerta(false). El preocedimiento estadoInicial tiene, al igual que los procedimientos anteriores dos parámetros de entrad/salida, mundo de tipo Tmundo y N,de tipo integer. Las variables que utiliza el procidimiento son: i,j,s,longcadena de tipo integer y mundostring de tipo string. Las variables i y j determinan la posicion de una celula de la matriz. La variable mundo string se iguala a la función de tipo string cargar_Mundo. Con la variable longcadena se dtermina la longitud máxima de la cadena de caracteres y se recorre ésta con la variable s como índice de un for. Los datos de la cadena se pasan a la matriz de NXN. El procedimiento mostrarPantalla muestra por pantalla el estado de las células de la matriz. Para ello se pasan como parámetros de referencia el vector y la dimensión de la matriz. La función selecciona, devuelve un valor de tipo integer. Mediante esta función se muestra el menú por pantalla y se indica al usuario que escoja una opción del menú. Sólo hay cuatro opciones posibles, para las cuales se debe teclear un número del 0 al 3. El bucle repeat until se encarga de que se introduzcan bien los datos. La función turnos, de tipo integer, se utiliza para pedir al usuario el número de turnos que quiere ejecutar en el juego. Se utiliza la estructura repeat until para asegurar que la introducción de datos es correcta. El procedimiento reglas toma como parámetros de entrada/salida las variables x,y y z, de tipo integer. Mediante este procedimiento se pide al usuario que introduzca un valor para cada variable. Estos valores son las reglas del juego. Para asegurar que el usuario introduce los datos correctamente se emplea la estructura repeat until. La función dimension devuelve un valor integer. Esta función pide al usuario la dimensión de la matriz. La matriz es cuadrada(NXN), por lo que solo basta con un valor de N. A continuación se definen las variables del programa principal. Estas son: opcion, numturnos, x, y, z, i, de tipo integer, mundo de tipo, Tmundo,fichero, de tipo string y pulsa de tipo char. Comienza el programa y se activa la función random mediante el comando randomize. una vez hecho esto, se inicia un bucle con la estructura repeat until. Se llama a la función selecciona mediante la variable opcion, que ahora guarda el valor de dicha función. Mientras que el valor introducido no sea 0, el programa evalua el valor de la variable opcion. Si la opción es 1, el programa pide la dimensión de la matriz mediante la función dimension y ejecuta el procedimiento genera Mundo, que genera un mundo de forma aleatoria y lo muestra por pantalla con el procedimiento mostrarPantalla(para ambos se utilizan las variables mundo y N). Cuando finaliza, el programa pide al usuario que pulse una tecla para volver al menú. Para ello se utiliza la variable pulsa de tipo char. Si la opción ha sido 2, el programa pregunta al usuario cuál es el número de turnos, mediante la función turnos, y los guarda en la variable numturnos. Después pide las reglas del juego, para lo que llama al procedimiento reglas mediante las variables x, y y z. Una vez hecho esto, utiliza la variable N y le asigna el valor de la función dimensión para determinar la dimensión de la matriz. A continuación realiza el procedimiento ejecucion en funcion del número de turnos elegidos por el usuario y los muestra por pantalla. Cuando ha finalizado este proceso vuelve a aparecer el menú pulsando una tecla cualquiera. Si la opción del usuario es 3, el programa pide la dimensión de la matriz de forma análoga a las opciones anteriores y llama al procedimiento estadoInicial y al procedimiento mostrarPantalla. Después vuelve al menú pulsando una tecla. Si la opción del usuario es 0, el programa finaliza y se pide que se pulse una tecla cualquiera para salir. ---------------------------- (añadido tras someter) ---------------------------- 18:41:23 11/12/09 -> Segun los datos introducidos los ficheros son: G09P04D2 -> Los autores del trabajo son: Rillo Bautista, Darío Vargas Sarría, Carlos Nombres originales de los archivos entregados -> G09P04D2.PAS, G09P04D2.txt