Programmeerimise algkursus Harjutus 3
Esimene töö: valida siga, mis on meile kõige lähemal.
Selleks teeme radariga tiiru ära ja märgime tiiru jooksul kõige lähemal olnud sea kauguse ja peilungi muutujatesse sea_kaugus ja siga_sihikul.
Tuki keeramine ja laskmine toimuvad peale radari "scan"-i.
...
double laksuTugevus = 2.0;
double siga_sihikul;
double sea_kaugus;
public void run() {
// Ära keera tukki koos kerega!
setAdjustGunForRobotTurn(true);
// Ära keera radarit koos tukiga
setAdjustRadarForGunTurn(true);
while(true) {
// Otsimise alustamisel on sea kaugus teadmata
sea_kaugus = Double.MAX_VALUE;
turnRadarLeft(360);
double keeramisnurk = arvutaKeeramisnurk(siga_sihikul);
turnGunRight(keeramisnurk);
fire(laksuTugevus);
}
}
public void onScannedRobot(ScannedRobotEvent e) {
double vastase_kaugus = e.getDistance();
double vastase_peilung = e.getBearing();
// Otsime kõige lähemal paiknevat vastast
if(vastase_kaugus < sea_kaugus) {
sea_kaugus = vastase_kaugus;
siga_sihikul = vastase_peilung;
}
}
public double arvutaKeeramisnurk(double vastase_peilung) {
double tuki_suund = getGunHeading();
double minu_suund = getHeading();
double vastase_suund = minu_suund + vastase_peilung;
double keeramisnurk = vastase_suund - tuki_suund;
return normalRelativeAngle(keeramisnurk);
}
...