示例#1
0
        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);
        }
示例#2
0
        private List <Point> GetMueren()
        {
            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);
        }
示例#3
0
        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);
        }