//Devuelve true si el animal se ha alimentado y false si no public bool buscaAlimentoAnimal(Animal animal) { int nPosX; int nPosY; if(animal.especie.tipo == tipoAlimentacionAnimal.herbivoro) { if(tablero[animal.posX,animal.posY].vegetal != null) { int comida = tablero[animal.posX,animal.posY].vegetal.consumeVegetales(animal.especie.alimentoMaxTurno); animal.ingiereAlimento(comida); //if(tablero[animal.posX,animal.posY].vegetal.numVegetales <= 0) // eliminaVegetal(tablero[animal.posX,animal.posY].vegetal); return true; } else { FuncTablero.randomLista(posicionesColindantes); for(int i = 0; i < posicionesColindantes.Count; i++) { nPosX = animal.posX + posicionesColindantes[i].e1; nPosY = animal.posY + posicionesColindantes[i].e2; FuncTablero.convierteCoordenadas(ref nPosX,ref nPosY); if(desplazaAnimal(animal,nPosX,nPosY)) return false; } } } else if(animal.especie.tipo == tipoAlimentacionAnimal.carnivoro) { FuncTablero.randomLista(posicionesColindantes); for(int i = 0; i < posicionesColindantes.Count; i++) { nPosX = animal.posX + posicionesColindantes[i].e1; nPosY = animal.posY + posicionesColindantes[i].e2; FuncTablero.convierteCoordenadas(ref nPosX,ref nPosY); if(tablero[nPosX,nPosY].animal != null && animal.esHabitable(tablero[nPosX,nPosY].habitat)) if(tablero[nPosX,nPosY].animal.especie.tipo == tipoAlimentacionAnimal.herbivoro) { int comida = tablero[nPosX,nPosY].animal.reserva % animal.especie.alimentoMaxTurno; tablero[nPosX,nPosY].animal.morir(); tablero[nPosX,nPosY].animal = null; animal.ingiereAlimento(comida); desplazaAnimal(animal,nPosX,nPosY); return true; } } for(int i = 0; i < posicionesColindantes.Count; i++) { nPosX = animal.posX + posicionesColindantes[i].e1; nPosY = animal.posY + posicionesColindantes[i].e2; FuncTablero.convierteCoordenadas(ref nPosX,ref nPosY); if(desplazaAnimal(animal,nPosX,nPosY)) return false; } } return false; }