Romero Villuendas, Fernando (536627) G13P06D2 Juego de la vida En principio he planteado el problema utilizando un registro que tiene dos campos que son dos vectores bidimensionales de 20x20 de byte (bivector.v[1..20,1..20] of byte, bivector.w[1..20,1..20] of byte y un contador bivector.n). He decidido que sea así, porque las células pueden estar vivas o muertas, es decir o 0 o 1, utilizando un simil eléctrico, podriamos decir que funcionan como un bombilla normal y corriente que solo puede tener dos estados o encendida o apagada. En la función "celula", hago un random(2), el cual devolverá 2 valores ( o 0 o 1), que son los que introduciré aleatoriamente en la matriz (vector bidimensional). Como pone que por ejemplo la probabilidad podia ser por ejemplo del 0,7, yo he decidido que sea del 0.5, por eso uso el random(2). En el procedimiento "generamundo", recorro la matriz introduciendo en las casillas los valores de 0 y 1 aleatoriamente, pero antes, atendiendo al enunciado que dice que enlos límites del mundo generado no puede haber vida, introduzco en cada posición del vector un 0 diciendo previamente como quiero el mundo (de 4x4, 5x5,..., 20x20), utilizando for to-do. Posteriormente llamo a la función celula para que me introduzca aleatoriamente los ceros y los unos en las posiciones, pero no desde el principio hasta el final, sino desde la fila 2 columna 2 hasta la fila 2 columna n-1 y fila n-1 hasta la columna n-1, sabiendo que la matriz será cuadrada, para simplificar el problema. En el procedimiento "recorremundo" hago eso, recorrer el mundo generado en la matriz bivector.v y escribir las casillas en la matriz bivector.w dependiendo de como son las de su alrededor en el bivector.v, o sea, el primero, lo hago recorriendo primero del principio al final desde la fila 2 columna 2 hasta la fila 2 columna n-1 y fila n-1 hasta la columna n-1, puesto que esas casillas si pueden cambiar, no como las de los límites, como ya he dicho antes según el enunciado el los limites no se puede vivir. En otras palabras, lo que hago es generar en un vector un mundo, el cual lo recorro y cambio su contenido en el otro vector, al finalizar un primer recorrido, el contenido del segundo vector lo introduzco en el primer vector, asi otra vez el mundo esta preparado para ser recorrido otra vez, asi hasta el nº de veces elegidas por el usuario. En un principio habia pensado utilizar solo un vector bidimensional, el cual era recorrido y dependiendo de su contenido, lo actualizaria, pero haciendo eso juntaría la mitad del vector actualizado con otra mitad desactualizado, por lo cual eso no estaba bien. En el procedimiento "DibujaMatriz" simplemente escribe por pantalla el contenido del vector. La función "vacio" nos devuelve un booleano, en la cual nos dice si esta el vector vacio o generado, porque si esta vacio para qué recorrerlo. El procedimiento "uno_o_otro" lo he creado a parte, aunque solo se llama una vez, para no hacer un programa principal largo, en el se da la posibilidad al usuario de elegir si quiere la evolución de los mundos paso a paso o ver directamente el final. El problema no esta acabado, pues falta el módulo para cargar un mundo desde fichero. ---------------------------- (añadido tras someter) ---------------------------- 20:55:45 11/12/09 -> Segun los datos introducidos los ficheros son: G13P06D2 -> Los autores del trabajo son: Romero Villuendas, Fernando Nombres originales de los archivos entregados -> G13P06D2.PAS, G13P06D2.txt