public MosquitoFemea(Ambiente amb, Celula posInicial) : base(EstagioMosquito.Adulto, posInicial, amb) { rd = RandomExtensions.GetInstance(); this.qtdAcasalamento = this.ciclosEspera = 0; this.Acasalou = this.depositouOvos = false; }
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; }
//Construtores public Pessoa(Ambiente amb, Celula posicaoInicial) : base(amb, posicaoInicial) { rd = RandomExtensions.GetInstance(); historico = new Stack<TipoDengue>(); EstaContaminado = EstaDoente = false; EstaVivo = true; }
public Agente(Ambiente amb, Celula posInicial) { this.ambiente = amb; this.posicaoAtual = posInicial; }
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; }
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; }