JUEGO DE LA VIDA En la practica que hemos realizado se han dado diferentes soluciones a cada una de las opciones de nuestro menú. A continuación explicaremos como hemos estructurado nuestro programa para una máxima comprensión de éste, para ello, esplicaremos para qué sirve cada procedimiento y que estructuras se han empleado en él. Procedimiento ColorearPantalla: Este procedimiento cambia el color de la pantalla, a color azul. Procedimiento pantalla incial; Procedimiento que muestra por pantalla un titulo de presentacion. Funcion Menu: Funcion que nos escribe en pantalla el menu pedido en el enunciado con las opciones de: genera mundo aleatorio, ejecucion y cargar estado inicial.Se ha realizado con una funcion puesto que unicamente nos devolvera el valor de la opcion elegida (1, 2, 3 ó 4). Procedimiento DibujaMundo procedimiento empleado para dibujar los tableros de nuestro programa en forma de matriz, consta de dos bucles for para recorrer toda la matriz, y dibujar lo que se halla guardado en ella. Procedimiento Generamundo: Se encarga de realizar la primera de las opciondes de nuestro menu. En el se nos preguntara que valor tomarara el lado de nuestro tablero (numero comprendido entre 0 y 20 controlado por un repeat) y el valor que tomara la probabilidad que tiene una celula de vivir(numero entre 0 y 1 controlado por un repeat para la correccion en la introduccion de datos) ,una vez establecido este ultimo valor, un random actuara en cada celda de nuestro tablero asignandoles un numero real aleatorio comprendido ente 0 y 1. Si el numero aleatorio para una casilla es menor o igual a la probabilidad se creara viva(1);si es mayor, la celula estara inicialmente muerta(0), ademas se encarga de poner las celulas de los bordes muertas. Funcion Menu2: Funcion encargada de enseñar por pantalla el menu que se encuentra en la opcion 2 de nuestro menu principal. En este menu se nos permite elegir entre paso a paso o modo resultado. Se ha realizado con una funcion puesto que unicamente nos dara un valor de salida, el de la opcion elegida (1 ó 2). Procedimiento Reglas: Procedimiento encargado de pedir el numero de iteraciones,ademas de dar valores a la x,y,z de nuestro programa si se elige la opcion de definirlos previamente, sino el programa cargara los valores predefinidos en el enunciado x=3 ; y=2 ; z=3. Procedimiento ejecucion: En este procedimeinto se ha creado un tablero auxiliar, al cual se le asigana el original,luego va recorriendo todas las casillas interiores del original (los bordes no puesto que siempre estan muertas) y mediante otros dos bucles for, va comparando las vecinas de cada una de las casillas, y las guarda en un contador, que es el numero de vecinas, en funcion de este contador creara las celulas vivas o muertas en el tablero auxiliar, finalmente se asigna el tablero auxiliar al original de forma que este es el nuevo tablero. Procedimiento ejecucion_paso: Procedimiento que llama a dibujamundo para ver el tablero original, y luego mediante un bucle for va pasando las iteraciones que se han pedido anteriormente, dentro de este bucle va llamando cada vez a ejecucion y a dibujamundo para mostrar cada iteracion. Procedimiento ejecucion_resultado: Procedimiento muy similar al anterior, llama a dibujamundo para ver el tablero inicial, y luego hace todas las ejecuciones, finalmente despues del bucle vuelve a llamar a dibujamundo para mostrar el tablero final. Procedimiento pide_fichero: procedimiento que pide al usuario si quiere cagar un mundo creado por él, en ese caso el usuario tendra que dar el nombre del fichero, sino se cargara el fichero por defecto, que nosotros hemos llamado "estado~1.txt", ya que con el nombre "estadoinicial.txt" no funcionaba, puesto que algunos MSDOS no reconocen archivos de mas de 8 caracteres. Funcion carga_mundo: Se ha copiado la funcion dada. Procedimiento cagar_estado: procedimiento que llama a la funcion carga_mundo y la asigna a una variable, despues mediante un bucle while y un contador, cuenta los caracteres que tiene el string quitando el caracter barra, despues le asigna ese contador a tablero.n dando asi el lado de la matriz.ç Se pone el contador a cero, y se recorre la matriz, en primer lugar con una condicional se mira si el caracter conparado es una barra, si es asi se suma uno al contador, despues se compara con el caracter 1, si es igual se escribe 1 en esa posicion del tablero, sino se escribe el caracter 0. Procedure finalizaprograma: Cuarta opcion de nuestro menu, la cual muestra un mensaje por pantalla y finaliza el programa. Programa principal: En el activaremos el ramdomice y llamamos a los procedimientos colorea pantalla y pantallainicial e inicializamos tablero.n a 0. Se ha puesto un bucle repeat puesto que en el enunciado se pedia que hasta q el usuario no eligiera la opcion, finalizar programa debia volver al menu.Tras esto llamamos a la funcion menu, el valor que devuelva se utilizara en la estructura case para ejecutar los procedimientos oportunos segun la opcion elegida, hasta que se elija la opcion 4 (Finalizar programa) y salga del bucle. - MIGUEL ANGEL FRAJ FANDOS - DIEGO AGUSTI MUÑOZ - 1º ELECTRICOS ---------------------------- (añadido tras someter) ---------------------------- 22:31:06 11/12/09 -> Segun los datos introducidos los ficheros son: G02P01D2 -> Los autores del trabajo son: Agusti Muñoz, Diego Fraj Fandos, Miguel Angel Nombres originales de los archivos entregados -> VIDA.PAS, vida[1].txt