Juego de la Vida -Declaración de constantes: Se han declarado los valores de x,y,z tal y como se muestra en el guión de la práctica. -Declaración de tipos: Se ha creado un nuevo tipo, "TpMatriz", el cual es un vector dimensional de tipo array de enteros que será utilizado para el tablero. -Procedimientos y Funciones: *** introducir_probabilidad: este procedimiento sirve para que el usuario introduzca por teclado la probabilidad elegida para las células vivas, lo que se ha hecho con el parámetro de entrada y salida "elegida". Además, se ha utilizado la función IOResult además de un bucle while...do para la robustez. ***probabilidad: es una función que compara los resultados del resultado de realizar un random con la variable local "aleatoria" y la probabilidad introducida por el usuario. Para ello, la función usa un parámetro de entrada "elegida". La función devuelve un booleano en función de si la célula debe estar viva o muerta. ***generador_de_tableros: es un procedimiento que mediante seis bucles for...to recorre la matriz que se usará como tablero para comprobar qué células estarán vivas (1) o muertas (0). Se ha empleado un parámetro de entrada y salida "Tabl1", que será la malla de juego, los parámetros enteros fila, columna y maximo que son el número de filas de la malla, el número de columnas y el tamaño máximo de la misma respectivamente. Además, se ha declarado un parámetro de entrada de tipo real "elegida" que servirá para comparar si una célula ha de estar viva o muerta en cada turno. Además, se ha llamado a la función "probabilidad" con sus distintos valores "true" (célula viva) o "false" (célula muerta). ***busca_1s: es una función empleada para que, al recorrer la matriz nos indique cuantos unos (células vivas) hay en el tablero y, mediante los valores constantes x,y,z o los que introduzca posteriormente el usuario por teclado haga que determinadas células vivas sigan así o mueran. Para ello se ha empleado un bucle repeat...until, dentro del cual dos bucles for...to recorren la malla incrementando un contador que almacenará el número de celdas vivas alrededor de la estudiada. Después, se han usado un bucle if...then que, en caso de que la celda estudiada esté viva disminuya el contador en uno. También se ha usado un bucle if...then...else, que utilizando los valores x,y,z nombrados anteriormente, haga que la función sea "true" o "false" si la célula estudiada ha de estar viva o muerta. Para ello se han declarado tres parámetros de entrada enteros "i","j","maximo", que simbolizan el número de filas de la malla, el número de columnas y el tamaño respectivamente. El parámetro de entrada y salida "matriz", del tipo creado anteriormente TpMatriz simboliza el tablero y los parámetros de entrada enteros "a","b","c" aluden a x,y,z o los datos introducidos posteriormente por el usuario por teclado. La función devuelve un valor booleano "true" o "false". ***rellenar_tablero: este procedimiento se usa para cambiar el estado de las células de la malla mediante los procedimientos anteriores en cada turno. Para ello, se han empleado dos bucles for...to que recorren la matriz, dentro de los cuales hay un bucle if...then...else que asignan a la matriz el estado de la célula: 1 (viva) o 0 (muerta). Se han empleado los parámetros de entrada enteros "fila","columna","maximo","a","b","c", donde fila es el número de filas de la matriz, columna el número de columnas, máximo el tamaño de la matriz, y a,b,c son los datos predefinidos x,y,z o los que posteriormente introduzca el usuario por teclado. ***menu: este procedimiento muestra el menú del juego, para lo que se ha usado un bucle repeat...until, dentro del cual el bucle principal es un case...of, que según la tecla pulsada por el usuario hará una u otra opción del menú. También se han usado varios bucle while...do para dotar de mayor robustez al juego. Se ha inicializado un contador a 0, que será empleado en un bucle repeat...until que finalizará cuando dicho contador sea igual al número de turnos introducido por el usuario por teclado. Este procedimiento llama a los anteriores directa o indirectamente para realizar el juego. Se han usado los parámetros de entrada y salida enteros "a","b","c", que son los datos predefinidos x,y,z o bien las reglas que escoja el usuario en este procedimiento. Los parámetros de entrada enteros "tamano","turnos","i","j", aluden al tamaño de la matriz, al número de turnos introducido por el usuario, el número de filas de la matriz y su número de columnas respectivamente. El parámetro de entrada y salida de tipo TpMatriz "tabl" alude al tablero de juego empleado y el parámetro de entrada real "elegida" a la probabilidad que se pedirá al usuario de que la célula esté viva o muerta. ***declaración de variables: -tablero_inicial es de tipo TpMatriz y será la malla de juego empleada. -a,b,c son de tipo entero y son las reglas introducidas por el usuario para que una célula viva o muera. -tamano, fila, columna son de tipo entero y aluden al tamaño de la matriz, su número de filas y su número de columnas respectivamente. -elegida es un real cuyo valor estará comprendido en el intérvalo [0,1] y será la probabilidad introducida por el usuario por teclado de que una célula esté viva o muerta. ***programa principal: se ha usado randomize para que los valores obtenidos por el procedimiento "probabilidad" sean totalmente aleatorios, se han inicializado las variables a,b,c con el valor de las constantes x,y,z y se ha llamado al procedimiento menu con sus correspondientes variables. ---------------------------- (añadido tras someter) ---------------------------- 21:54:10 11/12/09 -> Segun los datos introducidos los ficheros son: G16P04D2 -> Los autores del trabajo son: García Cuartero, Miguel Sanz Cascán, Sergio Nombres originales de los archivos entregados -> Juego de la Vida.PAS, Juego de la Vida.txt