Práctica de diseño 2, primera entrega: EL JUEGO DE LA VIDA. Realizada por el puesto de trabajo nº 2. Componentes: Ruben Bailo Carrera NIP: 592292 G01 Diego Barrero Caballero NIP: 591813 G01 ESTRUCTURACIÓN DEL PROGRAMA - -El programa empieza con la declaración de unas constantes:max y min, que nos acotan el rago del tamaño de la matriz. -También hemos llamado a la biblioteca crt. -Hemos utilizado nuevos tipos de variables debido a que con ellos nos va a ser mas facil trabajar dentro del programa: 1º TTablero para dibujar la matriz. 2º Tmodo, TLeyes, TMundo y Tejecucion para simplificarnos el llamamiento de las leyes dentro de los procedimientos. 3º Tmenu para ahorrarnos espacio en la memoria al solo necisitar 4 numeros. -Más adelante hemos definido una serie de variables utilizadas en el programa prncipal. -Tras haber hecho esto ya te empezamos a definir los procedimiento y funciones que necesitaremos en el programa principal; 1º Hacemos una función llamada elegir_menu para pintar el menu principal, y lo mas importante poder devolver la opcion escogida (con control de errores). 2º Utilizamos otra funcion paar devolver el valor del porcentaje, asimismo, utilizamos una funcion muy similar para devolver el tamaño de la matriz. 3º Hacemos un procedimiento llamado asigna_ejecucion con el que vamos a devolver el tipo de ejecucion (paso a paso o resultado), (con control de errores). 4º Realizamos una funcion para devolver el numero de turnos muy similar a la utilizada con el porcentaje. 5º Realizamos un procedimiento para pasar las reglas del juego, es decir, numero de vecinas para revivir, numero de vecinas para seguir vivas...(Con control de errores). 6º Realizamos 2 procedimientos para crear y dibujar el mundo: En el primero de los dos procedimientos asignamos vivas o muertas (true o false) dejando todas las celulas de los bordes como falsos, (para ello hemos utilizado el randomize y la probabilidad). En la otra, emos dibujado el tablero poniendo las celulas vivas como una casilla encendida (color azul claro) y las muertas dejandolas apagadas (color negro). 7º Hemos hecho un procedimiento extra para mostrar los datos ya escogidos,en la parte de abajo de la pantalla, y dejando parpadeando los datos aun no escojidos. 8º Hemos introducido la funcion ya dada y hemos intentado controlar que si se mete un fichero no existente no se nos salga de la ejecucion, pero no ha funcionado el IORESULT, siendo que el ejemplo del IORESULT en la ayuda de pascal esta especificada para ficheros y la hemos utilizado tal y como indica ahi. Tambien hemos hecho un procedimiento para cargar este fichero, con el cual comprobar este IORESULT, que el archivo que hemos metido tiene la misma anchura que largura,...pero no ha funcionado como esperabamos puesto que el IORESULT no ha funcionado como esperabamos. Tambien hemos adecuado los unos y ceros que nos devolvia el fichero .txt y los hemos modificado para que funcionaran tal y como funciona nuestro tablero por defecto. 9º Hemos realizado un procedimiento por si nos piden que hay que ejecutarlo paso a paso en el cual ya se va modificando el tablero segun las leyes. El suiguiente procedimiento ya es para ejecutarlo paso a paso por defecto, si es paso a paso hemos hecho un delay de 1,5 segundos de retraso dentro de un paso y otro. Aunque ponia que entre paso y paso habia que pulsar el enter nos ha parecido mas elegante hacerlo como lo hemos hecho. No obstante seria tan sencillo como poner un "readln" que hasta que no hayas pretado el enter no continuaria. -Después de haber ya hecho todos los procedimientos y funciones ya hemos empezado el programa pincipal: 1ºHemos llamado la funcion randomize(para poder ultilizar el random) y a clrscr(nos limpia la pantalla), hemos utilizado el clrscr dentro del repeat para que se limpie la pantalla en todo momento. 2º Hemos inicializado el tamaño, el porcentaje, num. de turnos, ejecucion, a un valor incoherente para que en el pequeño glosario de abajo para que saliera como que no la hubieramos introducido, es decir parpadeando. 3º Hemos inicializado las leyes (x,y,z) tal y como nos piden por defecto. 4º Hemos utilizado una variable llamada inicializado de tipo booleano para saber cuando el tablero ya esta inicializado, en el caso contrario no nos dejara meternos a la opcion 2 y emitira un sonido con un mensaje de error 5º Introducimos un repeat que dejara de repetirse cuando la opcion deseada sea la cuatro, con ello saldra un mensaje de error que durara 2 segundos (Delay). Dentro de este repeat hay un case of con 4 opciones, la cuarta opcion es la explicada anteriormente. En caso de haber elegido la opcion 1 nos pedira el tamaño y el porcentaje y nos creara el mundo en el lado derecho de la pantalla. En el caso de haber escogido la opcion 3 nos pedira que introduzcamaos el nombre del fichero a cargar y se pintara ese tablero en el lado derecho de la pantalla. Y por ultimo en la opcion 2, cuando ya hemos comprobado que tenemos un mundo cargado, nos va a pedir si queremos ejecutar el tablero paso a paso o que salga el resultado directamente, el numero de pasos, y si queremos introducir las leyes nosotros o las que nos dan por defecto. NOTAS: -Cabe destacar que hemos utilizado colores para poder entender mejor las cosas y darle una mejor presentación, ademas cuando son mensajes de error salen parpadeando (BLINK). - Hemos uitlizado mucho el GOTOXY para que no nos hiciera scroll la pantalla y asi poder borrar los mensajes de error. - En vez de utilizar la funcion de borrar una linea entera para borrar los datos erroneos que habia introducido el usuario, hemos introducido en su lugar una linea en blanco con 38 espacios, ya que si borrabamos la linea entera nos borraba parte del tablero y quedaba antiestetico. -Para finalizar comentarles que hemos intentado poner comentarios en el código del programa para poder entenderlo un poco mejor y tener todo bien detallado. ---------------------------- (añadido tras someter) ---------------------------- 19:29:07 11/12/09 -> Segun los datos introducidos los ficheros son: G01P02D2 -> Los autores del trabajo son: Bailo Carrera, Ruben Barrero Caballero, Diego Nombres originales de los archivos entregados -> JUEGOVID.PAS, textoweno.txt