Beispiel #1
0
        /// <summary>
        /// Cria uma entidade em um lugar livre no ambiente.
        /// </summary>
        /// <param name="entidadeTipo">Tipo de entidade para tentar criar.</param>
        /// <returns>Entidade criada.</returns>
        private Entidade AlocaEntidadeLugarSeguro(Entidades entidadeTipo)
        {
            List <Coordenadas> livres = Ambiente.GetCoordenadasLivres();

            livres.Shuffle();

            foreach (Coordenadas coordenadas in livres)
            {
                if (entidadeTipo == Entidades.LIXEIRA_ORGANICO || entidadeTipo == Entidades.LIXEIRA_SECO)
                {
                    if (Geral.EstaLivreArredores(coordenadas))
                    {
                        Ambiente.SetEntidade(coordenadas, new Lixeira(coordenadas, (entidadeTipo == Entidades.LIXEIRA_ORGANICO ? TipoLixo.ORGANICO : TipoLixo.SECO)));
                        return(Ambiente.GetEntidade(coordenadas));
                    }
                }
                else if (!Geral.EstaTrancado(coordenadas))
                {
                    if (entidadeTipo == Entidades.AGENTE)
                    {
                        Ambiente.SetEntidade(coordenadas, new Agente(coordenadas, Ambiente.Agentes.Count + 1));
                        return(Ambiente.GetEntidade(coordenadas));
                    }
                    else if (entidadeTipo == Entidades.LIXO_ORGANICO || entidadeTipo == Entidades.LIXO_SECO)
                    {
                        Ambiente.SetEntidade(coordenadas, new Lixo(coordenadas, (entidadeTipo == Entidades.LIXO_ORGANICO ? TipoLixo.ORGANICO : TipoLixo.SECO)));
                        return(Ambiente.GetEntidade(coordenadas));
                    }
                }
            }

            return(null);
        }
Beispiel #2
0
        /// <summary>
        /// Vê o que teve de mudança e limpa da tela entidades que não estão mais naquela posição do ambiente.
        /// </summary>
        private void LimpaEntidades()
        {
            List <EntidadeUC> entidadesUC = GetEntidades(e => e.Tipo != Entidades.NENHUM);

            foreach (EntidadeUC entidadeUC in entidadesUC)
            {
                Entidade entidade = Ambiente.GetEntidade(entidadeUC.Coordenadas);
                if (entidade == null)
                {
                    entidadeUC.Tipo = Entidades.NENHUM;
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Verifica se o lugar é possível de caminhar, mesmo que com lixo no chão.
        /// </summary>
        /// <param name="coordenadas">Posição do ambiente a ser consultada.</param>
        /// <returns>Se pode ou não caminhar por ali.</returns>
        public static bool PodeCaminhar(Coordenadas coordenadas)
        {
            if (!EstaLimite(coordenadas))
            {
                return(false);
            }

            Entidade entidade = Ambiente.GetEntidade(coordenadas);

            if (!(entidade is Agente) && !(entidade is Lixeira) && !(entidade is Multiplo))
            {
                return(true);
            }

            return(false);
        }
Beispiel #4
0
        /// <summary>
        /// Verifica se a coordenada está livre tanto no lugar pesquisado.
        /// </summary>
        /// <param name="coordenadas">Posição do ambiente a ser consultada.</param>
        /// <returns>Se está ou não livre.</returns>
        public static bool EstaLivre(Coordenadas coordenadas)
        {
            if (!EstaLimite(coordenadas))
            {
                return(false);
            }

            Entidade entidade = Ambiente.GetEntidade(coordenadas);

            if (!(entidade is Agente) && !(entidade is Lixo) && !(entidade is Lixeira))
            {
                return(true);
            }

            return(false);
        }
Beispiel #5
0
        /// <summary>
        /// Pega os objetos instanciados dentro da matriz e exibe na posição respectiva da interface.
        /// </summary>
        private void AtualizaEntidades()
        {
            LimpaEntidades();

            for (int y = 0; y < Ambiente.Linhas; y++)
            {
                for (int x = 0; x < Ambiente.Colunas; x++)
                {
                    Entidade entidade = Ambiente.GetEntidade(new Coordenadas {
                        X = x, Y = y
                    });

                    AtualizaEntidade(entidade, new Coordenadas {
                        X = x, Y = y
                    });
                }
            }
        }