Datos personales: GRUPO 15 ; PUESTO 8 • MªTeresa Jiménez Ruiz (NIA: 621614) • Rebeca Cano Gonzalo (NIA: 615868) Desarrollo de la práctica -En primer lugar señalar que el uso de "uses crt" lo utilizamos para alguna función del programa como "clrscr"(cuya función es la limpieza de la pantalla). -Hemos definido como constantes, tmax y tmin para las dimensiones del tablero de nuestro juego. Posteriormente, estas constantes son utilizadas para crear la matriz que constituirá el tablero. -Hemos definido un vector bidimensional del tipo tvector, para definir la matriz. -La primera función de nuestro programa nos permite elegir el modo de ejecución entre dos opciones. El modo de ejecución de esta función es de tipo char, porque las opciones son escogidas mediante un conjunto de caracteres. Dentro de la función hemos definido la variable opcion, que por consiguiente, también es de tipo char. El usuario puede escoger entre realizar la ejecución con el modo paso a paso en el que se mostrará un nuevo estado al pulsar una tecla, en este caso Intro, hasta que se llegue a los turnos escogidos por el usuario; o escoger el modo de ejecucion Sólo resultados, con el que sólo se muestra el estado final. Para evitar errores al escoger el modo,se hace uso de: >$I-,no se genera código, si el sistema detecta entradas erróneas, no actúa ante un error. >$I+,el compilador sí crea código para detectar errores. -En la siguiente función, definimos un menú en el cual el usuario podrá escoger entre las operaciones citadas en el enunciado. Al pulsar 1, se genera el mundo aleatorio; al pulsar2, se lleva a cabo la ejecución; pulsando 3, se carga un estado inicial predefinido, y por último, pulsando 4, se sale del programa. En este caso también hacemos uso de $I- y $I+, cuya función se explica en el apartado anterior. -A continuación se crea un procedimiento para generar un mundo aleatorio, en el cual empleamos los parámetros por referencia de entrada/salida tablero(del tipo tvector) y dim(del tipo integer), Son parámetros por referencia de entrada/salida. Dentro de este procedimiento se han definido dos variables(i,j) de tipo integer, y dos variavles(prob y aleatorio) de tipo real. Se pide el tamaño del tablero, cuyas dimensiones se encuentran entre las máximas y mínimas ya definidas. También se escoge la probabilidad, tal y como se nos pedía en el enunciado, que estará comprendida entre 0 y 1. También se crea un bucle para inicializar el tablero, en el que se hace uso de la variable aleatorio para comparar el valor obtenido con la probabilidad. En este mismo bucle, señalamos también la condición requerida de que toda "célula" dentro del tablero que se encuentre en los límites de las dimensiones,al ser un mundo plano, estará por definición muerta. -Seguidamente, se crea una función para contar el numero de células vivas alrededor de cada célula. Utilizamos para su definición los parámetros tv(del tipo tvector) e i,j (de tipo integer). Se han definido como variables locales, k, l y cont, del tipo integer. -Hemos creado también, un procedimiento llamado modtab que sirve para modificar el tablero siguiendo las reglas establecidas para x, y, z, para comprobar si mueren o viven. Utilizamos los parámetros tv(del tipo tvector) y dim, x ,y ,z(de tipo integer). Como variables locales definimos i,j de tipo integer. -Para mostrar el nuevo tablero, se crea el procedimiento mostrartabla cuyos parámetros contenidos son tabla(del tipo tvector) y dim(del tipo integer). Como variables locales: i,j: del tipo integer. -Creamos un procedimiento denominado reglas, en el cual se pide al usuario un valor para x, y, z comprendido entre 0 y 8, ya que 8 son las celulas que hay alrededor de cada una. -Para realizar el juego paso a paso, creamos un procedimiento cuyos parámetros son vector(del tipo tvector) y dimen ,turnos, x, y, z del tipo integer. variables locales: aux (tipo char), i(tipo integer). Se crea un bucle( for to) para que dado el numero de turnos elegido por el usuario, se repita tantas veces como tal el juego, cada uno con su tablero. En este procedimiento se llama a los procedimientos creados anteriormente: modtab, mostrartabla. Con la variable aux=readkey se consigue que al pulsar la tecla intro se pueda pasar de turno a turno. -Para realizar el juego empleando el modo sólo resultamos, se crea otro procedimiento llamado soloresult cuyos parametros empleados son vector( del tipo tvector), dimen, turnos, x ,y ,z (del tipo integer). Como variable local: se define i del tipo integer. Llamamos a los procedimientos modtab y mostrartabla, de manera que inicialmente se muestra el tablero, y posteriormente se realiza un bucle, en el que se repiten tantas modificaciones como turnos indique el usuario, pero en este caso sólo se mostrará el estado final. -Creamos una función para cargar un fichero tal y como se pide en el enunciado. -Por último se crea el programa principal en el que tenemos las siguientes variables: mundo(tipo string) opcion1 opcion2 (tipo char) tablero(tipo tvector) dim, x, y, z, turnos(tipo integer) Se llama a randomize dentro del programa principal. se establecen predefinidamente las reglas de x, y, z como x=3, y=2, z=3. se crea un bucle(repeat) para las opciones del menu en el que se van llamando a cada procedimiento para las distintas operaciones. En el caso de que se elija la opción 1, se hace un llamamiento al procedimiento generamundo. En el caso de pulsar dos, se realiza la operación ejecución en el que se piden reglas, turnos, opciones (de entre ellas pasoapaso y soloresult). Procedimientos ya definidos. En el caso de pulsar 3 , se carga por defecto un fichero. Se repetirá el menú hasta la opcion pulsar 4 , en la que se saldrá del programa. ---------------------------- (añadido tras someter) ---------------------------- 15:57:08 11/12/09 -> Segun los datos introducidos los ficheros son: G15P08D2 -> Los autores del trabajo son: Cano Gonzalo, Rebeca Jiménez Ruiz, Mª Teresa Nombres originales de los archivos entregados -> VIDA.PAS, desarrollo.txt