/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$I$?~ ~~II$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ,???$$???,, I$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$D, ~?I$??????????++?++I$?~ I$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$???8$$$$7?$$8MMMMMMMM8O$??$??7$?~~$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$??$8Z$$$8MMMMMMMMMMMMMMMMMMMMMM$$77$$?I?$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$=?$$$$$8MMMMMMN8MMMMM8MMMMMD8MMMMMMM8777???I$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$D~$Z8$$MMMMMMMMMMMM88???78MMMMMMMMMMMMMMM7O$$$?$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$ $OZ$MMMMMMMMMMM~~==~~~~~~~~~~,~$MMMMMMMMMD7$I7: $$$$$$$$$$$$$$$$ $$$$$$$$$$$$? 88$OMMMMMMMMMMMMMMMMMNMMNNMMMM87?=MMMMMMMMMMMM7?$$ $$$$$$$$$$$$$$$ $$$$$$$$$$$? 8$$8MMMMMMMMMMMMMMMMNNNNNNNNNNNMMNMMMMMMMMMMMMMM8$78 $$$$$$$$$$$$$$ $$$$$$$$$$? $$$8MMM~?7MMMMMMNNNNDNZ7$7IIZZDND8NNNMMMMMMMM?MMMM8Z78 $$$$$$$$$$$$$ $$$$$$$$$? 888MMM8~?$MMMMMMNNNDDNDD7?I7777DDNNDNNNNMMMMMM$$$MMMN8Z8~$$$$$$$$$$$$ $$$$$$$$N,DZ8MMMM~+MMMMMNNNDNNDDD88D88DD8DDDDDDDNNNNNNMMMMM??MMMM$$8~$$$$$$$$$$$ $$$$$$$$~8$88MMM~?MMMM77N8DDD8DD888888Z$8888Z8DDDDD8NNMMMMMM??MMM8O$8I$$$$$$$$$$ $$$$$$$$?88$MMMM$MMM$7777NNDDD888888OOOOOO888888DDDDOZ$MMMMMMM8MMM88O$I$$$$$$$$$ $$$$$$I?8$OMMMMIMMMMMM77ND8D8888OOOOOZ77OOOOOO8888DDNNNNMMMMMMMMMMM$88$$$$$$$$$$ $$$$$$I$88ZMMMMMMMMMNNDDD8888O8OOOOZZZZZOZZOOO888888DDDDNNMMMMMMMMM888Z$$$$$$$$$ $$$$$$8888MMMMMMMMMMNNNNDD88887OOZZOII77+7OZOOZ$888D8DNNNMMMMMMMMMMM888D$$$$$$$$ $$$$$8$88$MMMMMMMMMDNNDDD8Z8OO8O$ZZ$Z$IIOZZZ77OOO8888DDDN8NMMMMMMMMM88$8$$$$$$$$ $$$$$8888NMMMMMMMMMMNDDD8D8O8OZOO$$Z$$ZO$OO$OOZOOOO88DDDDMMMMMMMMMMM$88MI$$$$$$$ $$$$$DDD8MMMMMMMMMNMNDDD888O8OZZOZ$Z77$$7$OZOOZZOOO888DDDMMMMMMMMMMM8O8N8$$$$$$$ $$$$$M8O8MMMMMMMMMMNNN8888O8OZZZZZZ77I?=777ZZZZOZOOO8D8DNNNMMMMMMMMMM8OZM$$$$$$$ $$$$$DD88MMMMMMMMMMNDDDD888OOOZZZ$$$II??IZ$$OOZZOOO888DDDNMNMMMMMMMMMO88M$$$$$$$ $$$$$M8$8NMMMMMMMMMNNDD8DZZOOZOZZZZ$$7II77$Z7$ZZZO8O888DNN8MMMMMMMMMM8ZZ8$$$$$$$ $$$$$M8Z88MMMMMMMMMNNDD8D8O8OZOZZZZ$Z$$$$$$Z$ZZOOO8Z8DDDNNDMMMMMMMMM88$8I$$$$$$$ $$$$$8M888MMMMMMMMMMNDDD8D888OZZOZZOZZOOZOOZOOOO8O8D8DDNNMMMMMMMMMMM$88M$$$$$$$$ $$$$$$MO8OMMMMMMMMMNNNDDD888OOOOZZZZZZZZZZZZZZOOO888DDDDNNMMMMMMMMMM88ZM$$$$$$$$ $$$$$$MM888MMMMMMMMMNNNNDDD888OOOOZOZZOOZOOOO8OO888DDDNNNMMMMMMMMMM8O8MM$$$$$$$$ $$$$$$7M$88MMMMMMMMMMMNNDDD8D8888OOOOOOOOOOO8888D88DDDNNNMMMMMMMMMM8Z$M$$$$$$$$$ $$$$$$$NM$$$MMMMMMMMMMNNNDDD8888888OOOOO8OO888888DDDNNNNMMMMMMMMMM8$88I$$$$$$$$$ $$$$$$$$M88OMMMMMMMMMMMMNNNDDDD8D88888888888DD88DDDNNNMMMMMMMMMMM8$8$M$$$$$$$$$$ $$$$$$$$MM$O$8MMMMMMMMMNMN8NDDDD8D88DDZ8888D8ODDDNNNNMMMMMMMMMMMM$$$M$$$$$$$$$$$ $$$$$$$$$MM$$$MMMMMMMMMMMNDNDDNNDDDDDD88DDDDDDNNNNMNMMMMMMMMMMMM??$M$$$$$$$$$$$$ $$$$$$$$$$MM$$?$MMMMMMMMMMMMMMNNNNDNDDNNDNNNNNNNMMMMMMMMMMMMMM8~+~8I$$$$$$$$$$$$ $$$$$$$$$$$MM~?+?MMMMMMMMMMMMMMMNMNNNNNNNNNNNNMMMMMMMMMMMMMMMI~~:MI$$$$$$$$$$$$$ $$$$$$$$$$$$MM~=??MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM$$?~M$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$ND$$$$MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM$$$$ZM$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$MD$$7$$MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM$$$$7M$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$MD$$$OOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZ8$88MD$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$DM$77$$$MMMMMMMMMMMMMMMMMMMMMMMM$88$$$MD$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$D8$$$$7$$$OMMMMMMMMMMMM$~??$$$$$8D$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$MMM$$$$7$~~~~:~~ ~~:~~~?$$$DDI$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$8888?~~~~~ ~ ~~~~888I$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$I8888888$?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ===== ===== === ===== ===== ===== ======= ===== === === === === === ============= ==== ==== === ============= ============= === === === === === ==== ===== ===== ===== ===== =========== ===== ===== ===== ===== ============= ==== ===== ===== ===== ========= ========= ========= ========= ==== ==== ==== ==== ==== ==== ==== ==== === ==== ==== ==== ==== ==== ==== ==== ========= ==== ==== ==== ==== ==== ==== ===== ==== ==== ==== ==== ==== ==== ==== ========= ========= ========= ==== ===== ===== ===== Crobots : Hal9000 Type : Midi Version : 7.0 Author : Maurizio Camangi Begin : 11-04-2010 Revision : 12-04-2010 Eh sì. Come i Take That e i Duran Duran, anche Hal9000 ha sentito il bisogno di tornare. Non per i soldi. Hal9000 è un Jedi9 con una sola funzione di fuoco. Non mi fate fare copia & incolla ma accattatevi le info incluse in Jedi9... Per evitare alla radice problemi di naming in tornei misti, verrà iscritto al torneo con il nome di Hal9010. Test statistici sono stati utilizzati per calibrare al meglio alcune costanti del codice. */ int ang, oang, range, orange, d, /* Variabile temporanea salva danni subiti */ dir, /* Direzione del cammino */ posx, /* Variabili ad 1 bit */ posy, /* salva posizione */ x,y, /* Variabili salva posizione */ dist, flag, timer, enemies, attack, f2f, t, sk, fp, i, td, tl, deg, up, low, clock, dang, deg1, dscan, dvector; stop() { drive(dir,0); while(speed()>59);/* if (orange=scan(ang,10)) { if (range=scan((ang=(6*(scan((ang+=(10*(scan((oang=ang)+10,10)>0)-5))+10,10)>0)-3)+ang),10)) cannon(ang+(ang-oang),range+((range-orange)<<1)); } drive(dir,100);*/ } degree(xx,yy) /* Direzione per x,y */ int xx,yy; { return(dir=(360+((xx-=loc_x())<0)*180+atan(((yy-loc_y())*100000)/xx))); } dista(dx,dy) /* Distanza al quadrato (evita una sqrt()) */ int dx,dy; { return (((dx-=loc_x())*dx+(dy-=loc_y())*dy)); } corner() /* Si avvicina al corner */ { drive(degree(x,y), 100); while((dist=dista(x,y)) > 8100) { if(dist<25600) ; else fire(dir); } stop(t=0); } int radar(sc) { int sc, en, dx; while((en<2) && (dx<160)) { en+=radar2(sc+dx); dx+=20; } return en; } int radar2(sc) int sc; { return ( (scan(sc+10, 10)!=0) + (scan(-sc-10, 10)!=0) ); } int radar3(sc) int sc; { return ( scan(sc, 10) || scan(sc+20, 10) ); } fire(dir) { int asin,acos; if (speed()<100) drive(dir,100); else { if (scan(dir,10)) ang=dir; if (range>850) { ang+=120; } } if (scan(ang,10)) { asin=(sin(ang-dir)/14384); acos=(cos(ang-dir)/3796)-230; find(); if (orange=scan(oang=ang,3)) { find(); cannon(ang+(ang-oang)*((880+(range=scan(ang,10)))/482)-asin, range*230/(orange-range-acos)); } else search(); } else search(); } find() { if(scan(ang-13,10)) ang-=5; else if(scan(ang+13,10)) ang+=5; if(scan(ang+12,10)) ang+=4; else if(scan(ang-12,10)) ang-=4; if(scan(ang-11,10)) ang-=2; if(scan(ang+11,10)) ang+=2; } search() { if (range=scan(ang+=350,10)) return cannon(ang,range); if (range=scan(ang+=20,10)) return cannon(ang,range); if (range=scan(ang+=320,10)) return cannon(ang,range); if (range=scan(ang+=60,10)) return cannon(ang,range); if (range=scan(ang+=280,10)) return cannon(ang,range); search(ang-=220); } f2f() { up=700; low=300; while(1) { d=damage(); while(loc_x() < up) fire(dir=0); stop(); while(loc_y() > low) fire(dir=270); stop(); while(loc_x() > low) fire(dir=180); stop(); while(loc_y() < up) fire(dir=90); stop(); if ((damage()-d)>11) { /* Cambia ampiezza */ if (clock^=1) { up=600; low=400; } else { up=700; low=300; } } } } lightsaber(a) int a; { d=damage()+a; while(dista(x,y) < (123450-4925*(damage()>d))) fire(dir); } main() /* Inizializza alcune variabili ed innesca la routine principale */ { if(radar(180*(loc_x()>500))>1) { degree(x=20+960*(posx=loc_x()>500), y=20+960*(posy=loc_y()>500)); corner(fp=3); dvector=(dang=(deg=dscan=deg1=(90*((posy<<1)+(posx^posy))))+15)+15; dvector|=((dvector+30)<<16); dang|=((dang+60)<<16); dscan|=((deg1+70)<<16); deg+=320; tl=td=38; } else f2f(); while (1) { if (radar3((dscan>>flag)&65535)) { dir=(dvector>>flag)&65535; if (attack & (1<d) attack&=~(1<d) { lightsaber(0); ++timer; } } } else { dir=(dang>>flag)&65535; lightsaber(5); timer+=2; } stop(i=enemies=0); corner(flag^=16); if (++timer>tl) { while((i < 140)&&(enemies<2)) { enemies+=(scan(deg+i, 10)!=0); i+=20; } if (enemies<2) f2f=radar(deg1+45)<2; if (!f2f) { if(!(td>>=1) && (damage()<60)) attack|=65537; else attack&=~65537; tl=timer+td; } else f2f(); } } }