Methods
_contarvecinos(x, y)
Contar Vecinos
Esta funcion permite contar los vecinos de una celula, sea que esta viva como si esta muerta y devuelve la cantidad de vecinos vivos que esta tenga.
Esquema:
Esquema:
3 4 5
| | |
v v v
__ ___ ___
| | | | <-3
+---|---|---|
| 1 | 1 | 1 | <-4
+---|---|---|
| | | | <-5
+---|---|---|
calcular el vecino de 4,4
xCelula la cantidad de filas de celulas yCelula es la cantidad de columnas de celulas
variable | estado |
---|---|
prev[4][3] | verdadero |
prev[5][3] | falso |
prev[5][4] | falso |
prev[5][5] | falso |
prev[4][5] | verdadero |
prev[3][5] | falso |
prev[3][4] | falso |
prev[3][3] | falso |
Parameters:
Name | Type | Description |
---|---|---|
x |
int | filas |
y |
int | columnas |
getPuntoBajoMouse(e)
Celda seleccionada (getPuntoBajoMouse)
Esta funcion permite al programa determinar en sobre que celda se encuentra posicionado el mouse a partir de las coordenadas devueltas por el evento mousedown.
Para calcular este valor, se realizan las siguientes operaciones
X=
Donde:
e.pageX: posicion del cursor en x e.pageY: posicion del cursor en y
gx.ctx.canvas.offsetLeft: pixeles desde el lienzo hasta el borde de la pantalla a la izquierda gx.ctx.canvas.offsetright: pixeles desde el lienzo hasta el borde de la pantalla arriba gx.tamaño_celula: tamaño de la celula en pixeles
Parameters:
Name | Type | Description |
---|---|---|
e |
Object | eventos devueltos por el listener de mousedown |
iniciar()
Iniciar
Inicia el temporizador que avanza cada generacion
init()
Init
Esta funcion permite inicializar todas las variables necesarias para el funcionamiento de este programa
limpiar()
Limpiar
Cambia el estado de cada celula a apagado
parar()
Parar
Limpia el temporizador que ejecuta la funcion de siguiente_generacion
procesarCelula(celula)
Procesar Celula
Esta funcion permite calcular la posicion de la celula y determinar su estado
Parameters:
Name | Type | Description |
---|---|---|
celula |
Object | Objeto de puntos en X,Y definido en la clase Puntos |
siguiente_generacion()
Siguiente Generacion
Esta funcion se encarga de calcular la siguiente generacion de la partida, para esto, crea un nuevo arreglo con la matriz aun vigente, luego hace un barrido por cada una de las celdas buscando cuantas celulas tienen vecinos y evalua su situacion actual segun las reglas del juego de la vida. Una vez hecho esto, se copia la nueva matriz sobre la anterior, sobreescribiendola y mostrandola en pantalla.
Reglas del juego de la vida
- Cualquier celula viva con dos o tres compañeros vivos, sobrevive
- Cualquier celula muerta con tres compañeros vivos, revive
- Todas las demas celulas mueren en la siguiente generacion. De la misma forma, las celulas muertas, permanecen muertas
(Conway's game of Life, Wikipedia)