bool Herbivora::isTarget(MakhlukHidup M) { int i = 0; bool stop = false; while (i < M.get_ukuran_predator() && !stop) { if (get_DNA() == M.get_predator(i)) { stop = true; } else { i++; } } return (i < M.get_ukuran_predator()); }
//services void Herbivora::bergerak(MakhlukHidup M){ if (!Lapar()) { if (!berlari(M)) { gerak_bebas(getPosisi()); } else { setPosisi(gerak_menjauh(getPosisi(),M.getPosisi())); } } else { gerak_memburu(getPosisi(), M.getPosisi()); } }
bool Herbivora::berlari(MakhlukHidup M) { bool stop = false; int i = 1; if (isPredator(M)) { while (i < 10 && !stop) { if (gerak_berarah(getPosisi(),i) == M.getPosisi()) { stop = true; } else { i++; } } //i >= 10 || stop return (i >= 10); } else { return false; } }
//services void BurungUnta::Reaction(MakhlukHidup& M) { if (getPosisi() == M.getPosisi()) { if (get_DNA() == M.get_DNA()) { setMati(true); } else { if (isPredator(M.get_DNA())) { setMati(true); } else if (isTarget(M.get_DNA())) { set_tingkat_kekenyangan(get_maks_tingkat_kekenyangan()); } } } else { if (isRadius(2,M.getPosisi())) { if (isPredator(M.get_DNA())) { prosesMempercepat(); gerak_bebas(getPosisi()); } } else { set_Kecepatan(kecepatan_BurungUnta); } } }