/************** * * * P A I N .r * * * ************** Mini robot per il torneo 2011 Michelangelo Messina Il minirorobot e' un tentativo di riduzione dei macro discendenti diretti di shock.r E' una minima evoluzione di blitz.r, di cui eredita tutti i difetti. Il risultato e' abbastanza scadente... ma non so fare di meglio! La modifica principale ่ il cambio di routine di fuoco. E' risultato quasi un gemello omozigota degli scarsissimi unlimited.r e back.r All'avvio si posiziona nell'angolo piu' vicino, e oscilla verticalmente e orizzontalmente, senza restare mai fermo. Se viene colpito e i danni sono ingenti, controlla se c'e' un angolo libero. In caso affermativo ci si reca. Quando ne rimane uno solo attacca con un movimento a rettangolo al centro dell'arena. La routine di fuoco e' spudoratamente copiata da Danica.r Purtroppo i micro proprio non mi piacciono, e anche quest'anno tenter๒ di fare peggio dell'anno prima... */ int dam; /*percentuale di danni attuale*/ int deg,odeg,x; int up,dx; int dir; int sc1,sc2,ff; int b; main() { dove(attacco()); sc1=sc2=1; while (dam=damage()+10) { while ( damage() < dam ) { /*fino quando non e' colpito o limite di tempo*/ if (dx) { deg=180; xmag(885); s(xmin(915)); } else { deg=360; xmin(115); s(xmag(85)); } if (up) { deg=270; ymag(885); s(ymin(915)); } else { deg=90; ymin(115); s(ymag(85)); } if(b^=1) attacco(dir=x=0); } /* ricerca di un angolo libero */ if(up) { if(occupato(260)) fuggi(); else dove(ymag(85)); } else { if(occupato(80)) fuggi(); else dove(ymin(915)); } } } fuggi() { if(dx) { if(occupato(170)); else dove(xmag(85)); } else { if(occupato(350)); else dove(xmin(915)); } } attacco() { while((dir+=20)!=380) x+=(!scan(dir,10)); if (x>16) { sc1=5; sc2=3; ++ff; while(1) {ymag(350);xmin(650); ymin(650);xmag(350); } } } dove() { dx=(loc_x(up=(loc_y()>500))>500); } int occupato(i) /* restituisce 1 se ci sono nemici nella direzione i */ int i; { return(((scan(i,10))||(scan(i+20,10)))); } /* spostamento */ xmag(y) { while(loc_x(m(180))>y); } xmin(y) { while(loc_x(m(360))y); } ymin(y) { while(loc_y(m(90))