public MosquitoFemea(Ambiente amb, Celula posInicial)
     : base(EstagioMosquito.Adulto, posInicial, amb)
 {
     rd = RandomExtensions.GetInstance();
     this.qtdAcasalamento = this.ciclosEspera = 0;
     this.Acasalou = this.depositouOvos = false;
 }
Beispiel #2
0
        public Celula[,] GetCampoVisao()
        {
            int tamCampo = this.TamanhoCampoDeVisao * 2 + 1;
            Celula[,] campo = new Celula[tamCampo, tamCampo];

            int tamanho = this.TamanhoCampoDeVisao;

            for (int i = 0; i < tamCampo; i++)
            {
                for (int j = 0; j < tamCampo; j++)
                {
                    int celulaI = this.Posicao.Linha - 2 + i;
                    int celulaJ = this.Posicao.Coluna - 2 + j;
                    if ((celulaI < 0 || celulaI >= Ambiente.Tamanho) || (celulaJ < 0 || celulaJ >= Ambiente.Tamanho))
                    {
                        campo[i, j] = null;
                    }
                    else
                    {
                        campo[i, j] = Ambiente[celulaI, celulaJ];
                    }
                }
            }
            return campo;
        }
 public MosquitoMacho(Ambiente amb, Celula posInicial)
     : base(EstagioMosquito.Adulto, posInicial, amb)
 {
     rd = RandomExtensions.GetInstance();
     ciclosEspera = 0;
     acasalou = false;
 }
Beispiel #4
0
 //Construtores
 public Pessoa(Ambiente amb, Celula posicaoInicial)
     : base(amb, posicaoInicial)
 {
     rd = RandomExtensions.GetInstance();
     historico = new Stack<TipoDengue>();
     EstaContaminado = EstaDoente = false;
     EstaVivo = true;
 }
Beispiel #5
0
 public Agente(Ambiente amb, Celula posInicial)
 {
     this.ambiente = amb;
     this.posicaoAtual = posInicial;
 }
Beispiel #6
0
        protected List<Direcoes> MovimentosPossiveis(Celula posicaoAtual)
        {
            List<Direcoes> posicoesPossiveis = new List<Direcoes>() { Direcoes.E, Direcoes.N,
                                                                        Direcoes.NE, Direcoes.NO,
                                                                        Direcoes.O, Direcoes.S,
                                                                        Direcoes.SE, Direcoes.SO };
            // Verifica limite superior e inferior
            if (posicaoAtual.Linha == ambiente.Tamanho - 1)
            {
                posicoesPossiveis.RemoveAll(p => p == Direcoes.S || p == Direcoes.SO || p == Direcoes.SE);
            }
            else if (posicaoAtual.Linha == 0)
            {
                posicoesPossiveis.RemoveAll(p => p == Direcoes.N || p == Direcoes.NO || p == Direcoes.NE);
            }
            // Verifica limites laterais
            if (posicaoAtual.Coluna == 0)
            {
                posicoesPossiveis.RemoveAll(p => p == Direcoes.O || p == Direcoes.SO || p == Direcoes.NO);
            }
            else if (posicaoAtual.Coluna == ambiente.Tamanho - 1)
            {
                posicoesPossiveis.RemoveAll(p => p == Direcoes.E || p == Direcoes.SE || p == Direcoes.NE);
            }

            return posicoesPossiveis;
        }
Beispiel #7
0
 public void Mover(Celula c)
 {
     Posicao.RemoverAgente(this);
     posicaoAtual = c;
     Posicao.AdicionarAgente(this);
 }
        private void VerificaSePodePicar(Celula[,] campoVisao)
        {
            Pessoa aux;
            // verifica noroeste
            aux = campoVisao[1, 1] != null ? campoVisao[1, 1].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
            }

            //verifica se ha alguem no norte
            aux = campoVisao[1, 2] != null ? campoVisao[1, 2].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
                //desejos.Add(Posicoes.N);
            }
            //verifca se ha alguem no nordeste
            aux = campoVisao[1, 3] != null ? campoVisao[1, 3].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
                //desejos.Add(Posicoes.NE);
            }

            // verifica oeste
            aux = campoVisao[2, 1] != null ? campoVisao[2, 1].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
                //desejos.Add(Posicoes.O);
            }

            //verifica leste
            aux = campoVisao[2, 3] != null ? campoVisao[2, 3].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
                //desejos.Add(Posicoes.E);
            }

            //verifica sudoeste
            aux = campoVisao[3, 1] != null ? campoVisao[3, 1].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
                //desejos.Add(Posicoes.SO);
            }

            //verifica o sul tche
            aux = campoVisao[3, 2] != null ? campoVisao[3, 2].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
                //desejos.Add(Posicoes.S);
            }

            //verifica sudeste
            aux = campoVisao[3, 3] != null ? campoVisao[3, 3].Agentes.Find(p => p is Pessoa) as Pessoa : null;
            if (aux != null)
            {
                this.Picar(aux);
                return;
                //desejos.Add(Posicoes.SE);
            }
        }
        private List<Direcoes> VerificaSePessoaNoCampoDeVisao(Celula[,] campoVisao)
        {
            List<Direcoes> desejos = new List<Direcoes>();

            // Noroeste
            // 0,0 0,1 1,0
            if ((campoVisao[0, 0] != null && campoVisao[0, 0].Agentes.Find(p => p is Pessoa) != null) ||
                 (campoVisao[0, 1] != null && campoVisao[0, 1].Agentes.Find(p => p is Pessoa) != null) ||
                (campoVisao[1, 0] != null && campoVisao[1, 0].Agentes.Find(p => p is Pessoa) != null))
            {
                desejos.Add(Direcoes.NO);
            }

            // Norte
            if (campoVisao[0, 2] != null && campoVisao[0, 2].Agentes.Find(p => p is Pessoa) != null)
            {
                desejos.Add(Direcoes.N);
            }

            // Nordeste
            // 0,3 0,4 1,4
            if ((campoVisao[0, 3] != null && campoVisao[0, 3].Agentes.Find(p => p is Pessoa) != null) ||
                 (campoVisao[0, 4] != null && campoVisao[0, 4].Agentes.Find(p => p is Pessoa) != null) ||
                (campoVisao[1, 4] != null && campoVisao[1, 4].Agentes.Find(p => p is Pessoa) != null))
            {
                desejos.Add(Direcoes.NE);
            }

            // Leste
            if (campoVisao[2, 4] != null && campoVisao[2, 4].Agentes.Find(p => p is Pessoa) != null)
            {
                desejos.Add(Direcoes.E);
            }

            // Sudeste
            // 3,4 4,3 4,4
            if ((campoVisao[3, 4] != null && campoVisao[3, 4].Agentes.Find(p => p is Pessoa) != null) ||
                 (campoVisao[4, 3] != null && campoVisao[4, 3].Agentes.Find(p => p is Pessoa) != null) ||
                (campoVisao[4, 4] != null && campoVisao[4, 4].Agentes.Find(p => p is Pessoa) != null))
            {
                desejos.Add(Direcoes.SE);
            }

            // Sul
            if (campoVisao[4, 2] != null && campoVisao[4, 2].Agentes.Find(p => p is Pessoa) != null)
            {
                desejos.Add(Direcoes.S);
            }

            // Sudoeste
            // 3,0 4,0 4,1
            if ((campoVisao[3, 0] != null && campoVisao[3, 0].Agentes.Find(p => p is Pessoa) != null) ||
                 (campoVisao[4, 0] != null && campoVisao[4, 0].Agentes.Find(p => p is Pessoa) != null) ||
                (campoVisao[4, 1] != null && campoVisao[4, 1].Agentes.Find(p => p is Pessoa) != null))
            {
                desejos.Add(Direcoes.SO);
            }

            // Oeste
            if (campoVisao[2, 0] != null && campoVisao[2, 0].Agentes.Find(p => p is Pessoa) != null)
            {
                desejos.Add(Direcoes.O);
            }

            return desejos;
        }
        private List<Direcoes> VerificaSeMachoNoCampoDeVisao(Celula[,] campoVisao)
        {
            List<Direcoes> desejos = new List<Direcoes>();

            // Noroeste
            // 0,0 0,1 1,0
            if ((campoVisao[0, 0] != null && campoVisao[0, 0].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[0, 1] != null && campoVisao[0, 1].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[1, 0] != null && campoVisao[1, 0].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[1, 1] != null && campoVisao[1, 1].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.NO);
            }

            // Norte
            if ((campoVisao[0, 2] != null && campoVisao[0, 2].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[0, 1] != null && campoVisao[0, 1].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.N);
            }

            // Nordeste
            // 0,3 0,4 1,4
            if ((campoVisao[0, 3] != null && campoVisao[0, 3].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[0, 4] != null && campoVisao[0, 4].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[1, 4] != null && campoVisao[1, 4].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[1, 3] != null && campoVisao[1, 3].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.NE);
            }

            // Leste
            if ((campoVisao[2, 4] != null && campoVisao[2, 4].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[2, 3] != null && campoVisao[2, 3].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.E);
            }

            // Sudeste
            // 3,4 4,3 4,4
            if ((campoVisao[3, 4] != null && campoVisao[3, 4].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[4, 3] != null && campoVisao[4, 3].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[4, 4] != null && campoVisao[4, 4].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[3, 3] != null && campoVisao[3, 3].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.SE);
            }

            // Sul
            if ((campoVisao[4, 2] != null && campoVisao[4, 2].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[3, 2] != null && campoVisao[3, 2].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.S);
            }

            // Sudoeste
            // 3,0 4,0 4,1
            if ((campoVisao[3, 0] != null && campoVisao[3, 0].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[4, 0] != null && campoVisao[4, 0].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[4, 1] != null && campoVisao[4, 1].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[3, 1] != null && campoVisao[3, 1].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.SO);
            }

            // Oeste
            if ((campoVisao[2, 0] != null && campoVisao[2, 0].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null) ||
                (campoVisao[2, 1] != null && campoVisao[2, 1].Agentes.Find(p => p is MosquitoMacho && ((MosquitoMacho)p).Estagio == EstagioMosquito.Adulto) != null))
            {
                desejos.Add(Direcoes.O);
            }

            return desejos;
        }
        private List<Direcoes> VerificaFocoNoCampoDeVisao(Celula[,] campoVisao)
        {
            List<Direcoes> desejos = new List<Direcoes>();

            // Noroeste
            // 0,0 0,1 1,0
            if ((campoVisao[0, 0] != null && (campoVisao[0, 0] is Foco)) ||
                (campoVisao[0, 1] != null && (campoVisao[0, 1] is Foco)) ||
                (campoVisao[1, 0] != null && (campoVisao[1, 0] is Foco)) ||
                (campoVisao[1, 1] != null && (campoVisao[1, 1] is Foco)))
            {
                desejos.Add(Direcoes.NO);
            }

            // Norte
            if ((campoVisao[0, 2] != null && (campoVisao[0, 2] is Foco)) ||
                (campoVisao[0, 1] != null && (campoVisao[0, 1] is Foco)))
            {
                desejos.Add(Direcoes.N);
            }

            // Nordeste
            // 0,3 0,4 1,4
            if ((campoVisao[0, 3] != null && (campoVisao[0, 3] is Foco)) ||
                (campoVisao[0, 4] != null && (campoVisao[0, 4] is Foco)) ||
                (campoVisao[1, 4] != null && (campoVisao[1, 4] is Foco)) ||
                (campoVisao[1, 3] != null && (campoVisao[1, 3] is Foco)))
            {
                desejos.Add(Direcoes.NE);
            }

            // Leste
            if ((campoVisao[2, 4] != null && (campoVisao[2, 4] is Foco)) ||
                (campoVisao[2, 3] != null && (campoVisao[2, 3] is Foco)))
            {
                desejos.Add(Direcoes.E);
            }

            // Sudeste
            // 3,4 4,3 4,4
            if ((campoVisao[3, 4] != null && (campoVisao[3, 4] is Foco)) ||
                (campoVisao[4, 3] != null && (campoVisao[4, 3] is Foco)) ||
                (campoVisao[4, 4] != null && (campoVisao[4, 4] is Foco)) ||
                (campoVisao[3, 3] != null && (campoVisao[3, 3] is Foco)))
            {
                desejos.Add(Direcoes.SE);
            }

            // Sul
            if ((campoVisao[4, 2] != null && (campoVisao[4, 2] is Foco)) ||
                (campoVisao[3, 2] != null && (campoVisao[3, 2] is Foco)))
            {
                desejos.Add(Direcoes.S);
            }

            // Sudoeste
            // 3,0 4,0 4,1
            if ((campoVisao[3, 0] != null && (campoVisao[3, 0] is Foco)) ||
                (campoVisao[4, 0] != null && (campoVisao[4, 0] is Foco)) ||
                (campoVisao[4, 1] != null && (campoVisao[4, 1] is Foco)) ||
                (campoVisao[3, 1] != null && (campoVisao[3, 1] is Foco)))
            {
                desejos.Add(Direcoes.SO);
            }

            // Oeste
            if ((campoVisao[2, 0] != null && (campoVisao[2, 0] is Foco)) ||
                (campoVisao[2, 1] != null && (campoVisao[2, 1] is Foco)))
            {
                desejos.Add(Direcoes.O);
            }

            return desejos;
        }