Elikkä, pelissä on noin 30 bottia, jokaisen botin tehtäviin kuuluisi katsoa että mikä boteista on lähinnä, ja hyökätä kimppuun.
Ajattelin jotenkin näin:
////////////////////////////////////////////////////////////////////////////////////////////////////
double Pituus[MAXBOTS];
int victim;
for (int i=0; i
Ajattelin jotenkin näin:
////////////////////////////////////////////////////////////////////////////////////////////////////
double Pituus[MAXBOTS];
int victim;
for (int i=0; i
Vastaukset 4
Vanhimmat
"Tekoäly" tässä yhteydessä on vähintäänkin liioittelua eikä pituuksia kannata valmiiksi laskea kuin siitä kohteesta jos siitäkään.
Laske siis koordiaattierotuksien neliöt vektoriin ja jollain hae_pienin() valmisfunktiolla valitset niistä pienimmän.
Jos pituus neliöjuurrettuna on pienin niin myös juurrettava on niistä pienin ja näin säästyy huomattava määrä liukulukulaskentaa jolloin nopeus kasvaa moninkertaiseksi.
niin ilmeisesti puhutaan sitten olio-ohjelmoinnista.
aina kun on edessä joku iffihelvetti, niin yleensä tekee jotain väärin/vaikeasti.
Botti-luokassa pitäisi olla muuttuja
Botti lähin;
jossa pidetään viittaus lähimpään vastustajaan.
Botti-luokassa on myös metodi hae_lähin(Botti[] botit) jota kutsutaan per Botti for-loopissa vaikka mainista.
Tämä metodi hakee kyseiselle botille lähimmän vastustajan ja tallettaa viittauksen em. muuttujaan.
Menee siis botit-taulukon läpi ja vaihtaa lähin-muuttujan arvoa aina jos löytyy vielä lähempänä oleva botti.
mielenkiintoisempi tieto olisi se, minkä botin jyvällä itse on, koska sillä botillahan on selvästi murha mielessään.
..Nerokasta!
Hel-vetin paljon kiitoksia tuosta, toimii nyt loistavasti!