public static List<Base> Detectar(Universo universo, Entidade entidade) { List<Base> detectadas = new List<Base>(); long inicialX = entidade.atualX - entidade.visao; long finalX = entidade.atualX + entidade.visao; long inicialY = entidade.atualY - entidade.visao; ; long finalY = entidade.atualY + entidade.visao; ; for (long x = inicialX; x <= finalX; x++) { for (long y = inicialY; y <= finalY; y++) { foreach (Base b in universo.listaBase) { if (b.atualX == x && b.atualY == y && b.nome != entidade.nome) detectadas.Add(b); } } } entidade.AlterarEnergiaAtual(-1); return detectadas; }
public static bool VerificaPossivelMovimento(Universo universo, Entidade entidade, long x, long y) { //foreach (Entidade e in universo.Entidades) //{ // if (x >= e.posicaoX || y >= e.posicaoY) // return false; //} if (x > universo.comprimento || y > universo.altura || x < 0 || y < 0) return false; return true; }
public static bool Mover(Universo universo, Entidade entidade) { Random random = new Random(); long espacoX = 0; long espacoY = 0; long novoX = 0; long novoY = 0; if (random.Next(2) >= 1) { espacoX = random.Next(Convert.ToInt16(entidade.velocidade)); } else { espacoX = -random.Next(Convert.ToInt16(entidade.velocidade)); } if (random.Next(2) >= 1) { espacoY = random.Next(Convert.ToInt16(entidade.velocidade)); } else { espacoY = -random.Next(Convert.ToInt16(entidade.velocidade)); } if (espacoX > 0 || espacoY > 0) { novoX = entidade.atualX + espacoX; novoY = entidade.atualY + espacoY; if (MoverXY(universo, entidade, novoX, novoY)) { entidade.AlterarEnergiaAtual(-Math.Abs(espacoX)); entidade.AlterarEnergiaAtual(-Math.Abs(espacoY)); return true; } else { entidade.AlterarEnergiaAtual(-1); return false; } } else { return false; } }
private static bool MoverXY(Universo universo, Entidade entidade, long x, long y) { if (VerificaPossivelMovimento(universo, entidade, x, y)) { if (entidade.atualX != x) entidade.atualX = x; if (entidade.atualY != y) entidade.atualY = y; return true; } return false; }
static void Main(string[] args) { Console.WriteLine("Bem vindo ao Universo.\n"); DateTime bigBang = DateTime.Now; DateTime endBang = bigBang.AddSeconds(180); Console.WriteLine("BigBang em " + bigBang + "."); Cerebro.Universo universo = new Cerebro.Universo() { comprimento = 10, largura = 10, altura = 10 }; Objeto maca = new Objeto(3, 3, 1) { nome = "Queijo", peso = 1, material = Material.Organico, estadoFisico = EstadoFisico.Solido, genero = Genero.Feminino, reino = Reino.Planta }; Entidade rato = new Entidade(2, 2, 2, 50) { peso = 1, comprimento = 1, altura = 1, largura = 1, nome = "Rato", taxaDeAtividade = 1, velocidade = 3, reino = Reino.Animal, genero = Genero.Masculino, estadoFisico = EstadoFisico.Solido, material = Material.Organico }; universo.Adicionar(rato); universo.Adicionar(maca); Console.WriteLine("\nEntidades presentes no Universo:"); foreach (Base b in universo.listaBase) { Console.WriteLine(" - " + b.nome + " em " + b.atualX + "," + b.atualY + "."); } Console.WriteLine("\nIniciando atividades:"); while (endBang > DateTime.Now) { //List<string> ultimasAtividades = universo.Fluir(bigBang); foreach (Base b in universo.listaBase) { b.AutoVerificacao(); if (b is Entidade) foreach (Estados e in b.estadosAtivos) Console.WriteLine(b.nome + " esta " + e.ToString()); } //foreach (string s in ultimasAtividades) //{ // Console.WriteLine(s); //} } Console.WriteLine("\nEndBang em " + endBang + "."); Console.ReadKey(); }
public static bool Descansar(Universo universo, Entidade entidade) { return true; }