PRACTICA DISEÑO 2 : EL JUEGO DE LA VIDA Integrantes del grupo: Eduardo Ferreruela Elizalde Guilllermo Ayerbe Periz En este programa hemos utilizado los vectores y registros tal y como nos pedian, definiendo un vector de 2 coordenadas (x,y) para que recorra todas las casillas del tablero y además tiene 2 campos uno para el estado actual de la celula y otro para el estado anterior (más adelante se verá el porque de los 2 estados, cuando lo comparemos con las celulas de alrededor). MODULOS Function suerte ( hace una probabilidad del 1 al 10, esto nos ayuda en el procedimiento mundoaleatorio). Procedure ladotablero (var c :integer) Pide el tamaño del tablero protegiendo los valores que nos puedan dar entre 4 y 20 y que sea un entero. Procedure actualizar (var t:Tablero; c:integer) vector tablero de entrada/salida porque lo modificamos y c de entrada para leer el tamaño del tablero. Este procedimiento introduce el valor del campo vida en el campo de vida_anterior ( lo usaremos más adelante cuando comparemos las casillas vivas o muertas de alrededor de una casilla) Procedure mundoaleatorio (var t: Tablero; c:integer) vector tablero en/sal ya que modificamos el estado, y leemos el valor de entrada del lado del tablero. Este modulo genera un estado de las células aleatorio, utiliza 2 veces la function suerte definida anteriormente y según si un número es mayor que el otro las células estaran vivas o muertas (hace una probabilidad distinta para cada casilla). Antes de terminar este modulo ejecutamos el modulo actualizar para que vida y vida_anterior sean iguales. Function cargarmundo y cargar_mundo en proceso no funcionan. Procedure mostrarcelulas (t:Tablero; i,j:integer) lee los valor del vector y de las coordenadas. Este modulo lo llamaremos en el procedimiento de mostrartablero y nos dibujara una X morada o un O amarillo según el valor del campo vida del vector. Procedure mostrartablero (c:integer; t:Tablero) leemos el valor del lado del tablero y el vector. Con este modulo recorremos el tablero casilla a casilla y llamamos al modulo mostrarcelulas para cada casilla. Procedure exit (var salir:char) Pregunta al usuario si quiere salir del programa y lo almacena en una variable tipo char de salida. Procedure menu (var turnos,x,y,z:integer; var incial.mode:char) valores de salida ya que los usamos en el programa principal. Pregunta al usuario el numero de turnos,si quiere cargar fichero, si quiere cambiar las reglas o el modo de ejecución. Procedure jugar(var t:Tablero; c,x,y,z:integer) solo el vector es de salir ya que cambiamos el estado de vida. Modulo principal del programa recorre las casillas una a una (omitiendo el borde) y: - Cuenta cuantas celulas vivas tiene una casilla alrededor suyo en aux, usando el campo vida_anterior. - Una vez terminado el recuento de células aplica las reglas x,y,z para ver si cambia su estado. - Si cambia el estado de una célula lo almacena en el campo vida, para que no interfiera con el cálculo de nuevas células. - Una vez terminados todos los cambios almacena el nuevo valor de las celulas de vida en vida_anterior, con el modulo actualizar. PROGRAMA PRINCIPAL Va llamando a los modulos haciendo un repeat hasta que se elija la opción salir. Se podia haber simplificado más pero me parecia excesivo meter más cosas en modulos. El programa de ejemplo para cargar fichero de la pagina web, no me funciona me da un error al hacer run, asi que no he podido ni siquiera entender como se podia hacer lo de cargar fichero, ademas que aun no hemos visto nada de eso en clase (ni de teoria ni de practicas). ---------------------------- (añadido tras someter) ---------------------------- 19:39:43 11/12/09 -> Segun los datos introducidos los ficheros son: G03P09D2 -> Los autores del trabajo son: Ferreruela Elizalde, Eduardo Ayerbe Periz, Guillermo Nombres originales de los archivos entregados -> juegodelavida.pas, juegodelavida.txt