/* Nome : Asterix Versione : As_d5 Autore : Simone Ascheri Commento ======== Asterix è un robot vecchio, superato, che nasce con un anno di ritardo. Doveva, infatti, essere il mio quarto robot per il torneo dello scorso anno, la fusione tra la difesa di Burrfoot e l'attacco di Raistlin, ma per qualche strano motivo l'innesto non riuscì: anzichè avere, infatti, la somma delle efficienze (o per lo meno un aumento) tutto quello che ottenevo era la loro differenza. Ripiegai cosi' su quel brutto ibrido di ZifNab, di cui mi vergogno profondamente. A distanza di un anno ci ho riprovato, e i risultati sono stati decisamente migliori: eccellenti per il torneo 2001, temo inaccettabili per quello del 2002.... non mi resta che sperare che, essendo un under1000, almeno in quel torneo riesca a fare qualche cosa. Strategia ========= All'inizio del Match si comporta come Doom2099. Dopo 8 cicli Doom completi (per un totale di 80 quadrati disegnati), parte con la componente Idefix del sistema. A differenza di quest'ultimo, pero', sceglie la direzione di oscillazione in base ai danni subiti durante l'allontanamento da un angolo (come Rudolf6). Gia' qui si presenta una stranezza: se la decisione viene presa considerando i danni subiti lungo tutto il tragitto andata/ritorno (come sarebbe più logico), le prestazioni non solo non migliorano, bensi' peggiorano. Mistero. Una seconda stranezza è data dal fatto che una versione piu' corta, con le stesse funzionalità, e in cui il risparmio di 30 vb veniva ottenuto su parti non cicliche del codice, peggiora il rendimento di ben 4 punti. Non dovrebbero saltare temporizzazioni alcune, per cui non riesco a spiegarmi la cosa. A differenza di Doom gli avversari sono conteggiati in un punto meno esposto, dato che, per avvicinarsi agli angoli, usa le routine di Idefix. Se i dannni superano l'80% inizia a oscillare sulla diagonale con brevissimi movimenti. Nonostante tutto cio', il miglioramento in t2k1 rispetto al ben più magro Doom2099 e' di un misero 3%. Le cose vanno decisamente meglio in un torneo ipotetico under1000, dove l'efficienza aumenta di 10 punti. L'attacco e' il solito Rudolf6 like, e gia' questo gli farà prendere tanti colpicini nelle partite che verranno. Note Tecniche ============= Nessuna novità che non sia già presente in Idefix o Doom2099. */ int ang, dx, dy, r_coord, y_coord, x_coord; int a, oa, r, or, s_lim, i_lim; int h, mx, my, nx, ny, flag1; int ang_pref,ang_base,clock,discr,z; int timmax,time,run; int dor,dvor,dan; main() { Doom(Asterix(ang_pref=180*((dy=(loc_y(timmax=9)>500)*960+20)>500)+90*((dx=(loc_x()>500)*960+20)!=dy))); } Asterix() { while (drive (ang=(loc_x()>dx)*180+atan(((dy-loc_y())*100000)/((dx-loc_x())+(dx==loc_x()))),100)) { s_lim=(i_lim=ang_pref-35)+160; while ((Dista(dx,dy)>4400)) if (h>6500) PallaDiFuoco(h<25000); if ((timmax+=Stop(flag1=8))%10); else { while ((i_lim+=20)<=s_lim) flag1-=(scan(i_lim,10)>0); while (flag1>6) { dy=1000-dy; while((loc_y()>dy)==(z=(dy<500))) { if(loc_x()>500) { Fuoco(170+20*z); } else { Fuoco(370-20*z); } } } if ((time)<9) return; } if ((dan=damage())>80) { clock=0; time=10; } if (clock=32000-clock) { ang=45; } else { ang_base=ang_pref+(ang=90*(dor5)))<500)*r_coord; while (--run) { while(loc_y() <910-y_coord) CucchiaioKender(90); while(loc_x() >r_coord-x_coord+90) CucchiaioKender(180); while(loc_y() >r_coord-y_coord+90) CucchiaioKender(270); while(loc_x() <910-x_coord) CucchiaioKender(0); } Stop(ang=0); Asterix(timmax=9); } } CucchiaioKender(dir) int dir; { drive (dir,100); if((or=scan(oa=a,10))&&(or<850)) { if (r=scan(a,3)); else if (r=scan(a-=7,3)); else if (r=scan(a+=14,3)); else return a+=21; cannon (a,r); } else if(scan(a+=21,10)); else if(scan(a-=42,10)); else if(scan(dir,10)) a=dir; else return (a+=84); }