Пример #1
0
        public override void Executar()
        {
            if (EstaVivo)
            {
                base.Executar();
                if (Estagio == EstagioMosquito.Adulto)
                {
                    List<Direcoes> desejos = new List<Direcoes>();

                    //int tamanho = TAMANHO_CAMPO_DE_VISAO * 2 + 1;
                    Celula[,] campoVisao = this.GetCampoVisao();
                    VerificaSePodePicar(campoVisao);
                    if (!jaPicou)
                    {
                        desejos = VerificaSePessoaNoCampoDeVisao(campoVisao);
                        if (desejos.Count == 0)
                            desejos.AddRange(MovimentosPossiveis(this.Posicao));
                    }
                    else if (!Acasalou)
                    {
                        desejos = VerificaSeMachoNoCampoDeVisao(campoVisao);

                        if (Posicao.Agentes.Find(ag => ag is MosquitoMacho) == null)
                        {
                            desejos.AddRange(MovimentosPossiveis(this.Posicao));
                        }
                    }
                    else if (Acasalou && !(Posicao is Foco) && !depositouOvos)
                    {
                        desejos = VerificaFocoNoCampoDeVisao(campoVisao);
                        if (desejos.Count == 0)
                            desejos.AddRange(MovimentosPossiveis(this.Posicao));
                    }
                    else if (Acasalou && (Posicao is Foco) && !depositouOvos)
                    {
                        Mosquito filhote;
                        int sexo;
                        for (int i = 0; i < 10; i++)
                        {
                            sexo = rd.Next(0, 100);
                            if (sexo < 50)
                            {
                                filhote = new MosquitoMacho(this.Ambiente, this.Posicao) { Estagio = EstagioMosquito.Ovo, TipoDengue = this.TipoDengue };
                            }
                            else
                            {
                                filhote = new MosquitoFemea(this.Ambiente, this.Posicao)
                                {
                                    Estagio = EstagioMosquito.Ovo,
                                    TipoDengue = this.TipoDengue
                                };
                            }
                            Ambiente.AdicionarAgente(filhote, Posicao);
                        }
                        depositouOvos = true;

                    }
                    else if (depositouOvos && ciclosEspera < 3)
                    {
                        ciclosEspera++;
                        desejos.AddRange(MovimentosPossiveis(this.Posicao));
                    }
                    else if (depositouOvos && ciclosEspera >= 3)
                    {
                        jaPicou = false;
                        depositouOvos = false;
                        Acasalou = true;
                        desejos.AddRange(MovimentosPossiveis(this.Posicao));
                    }
                    //Se nao tiver nenhuma pessoa perto, movimenta aleatoriamente
                    if (desejos.Count != 0)
                    {
                        Direcoes posicaoEscolhida = desejos[rd.Next(0, desejos.Count)];
                        Mover(posicaoEscolhida);
                    }
                }
            }
        }
Пример #2
0
 private void AcasalarCom(MosquitoFemea vitima)
 {
     if (vitima.QuerAcasalar())
     {
         //Se nao esta contaminado, ficara com o tipo de dengue da femea
         if (!this.TipoDengue.HasValue && vitima.TipoDengue.HasValue)
         {
             this.TipoDengue = vitima.TipoDengue.Value;
         }
         vitima.AcasalarCom(this);
         acasalou = true;
     }
 }