private List <Point> GetSobreviven() { List <Point> ret = new List <Point>(); //Sobreviven foreach (Point item in Vivientes.AsParallel()) { Celda c1 = Matriz[item.X, item.Y]; bool sobrevive = algoritmo.EvualuarProximoEstado(1, c1.Cantidad, c1.Cantidad); if (sobrevive) { ret.Add(item); } } return(ret); }
private List <Point> Mueren() { List <Point> ret = new List <Point>(); foreach (Point item in Vivientes.AsParallel()) { Celda c1 = Matriz[item.X, item.Y]; if (c1.Edad >= EdadMaxima) { ret.Add(item); continue; } bool vive = algoritmo.EvualuarProximoEstado(1, c1.Cantidad, c1.Cantidad); if (!vive) { ret.Add(item); } } return(ret); }
private List <Point> GetNacen() { List <Point> ret = new List <Point>(); //Nacen foreach (Point item in Vivientes.AsParallel()) { foreach (Point vecino in Matriz[item.X, item.Y].Vecinos) { Celda celdaVecina = Matriz[vecino.X, vecino.Y]; if (!celdaVecina.Viva) { bool nace = algoritmo.EvualuarProximoEstado(0, celdaVecina.Cantidad, celdaVecina.Cantidad); if (nace) { Matriz[vecino.X, vecino.Y].Viva = true; Matriz[vecino.X, vecino.Y].Edad = 0; ret.Add(celdaVecina.Ubicacion); } } } } return(ret); }