/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$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 : 8.03 Author : Maurizio Camangi Begin : 22-05-2010 Revision : 04-01-2011 Hal9011 è una versione preliminare di Jedi10 ridotta. Ridotta a perdere. Sì perché Hal9011 è stato creato per fare massa e non interrompere la malsana idea di iscrivere sempre un robot della serie Hal9000 al torneo. Idea interrotta - con molta astuzia - diversi anni fa e ripresa nel 2010 dopo una botta di nostalgia. */ int ang, oang, range, orange, /* Variabili di puntamento */ d,dmax, /* Variabili temporanee salva danni subiti */ dir, /* Direzione del cammino */ posx, /* Variabili ad 1 bit */ posy, /* salva posizione */ dist, /* Distanza dal corner */ flag, /* Bit-oriented flag per la gestione del movimento */ timer, fp,att, enemies, /* Conta nemici superstiti */ t, /* Timer oscillazione */ td, tl, /* Variabili di utilità */ deg1, /* Limite inferiore di scansione per contare i nemici */ deg2, /* Limite superiore di scansione per contare i nemici */ dscan, dvector /* Array bidimensionali */ ; stop() { spara(drive(dir,t=0)); while(speed()>59) ; } int radar() { int deg=deg1-20; enemies=3; while((deg<=deg2)&& enemies) enemies-=(scan(deg+=20, 10)!=0); if (enemies>1) { int b; att=fp=5; if (scan(deg1+45,10)) dir=ang=deg1+45; else dir=deg1+15; while(1) { if(t%2) { if (((posx=loc_x())%880)<120) dir=180*(posx>500); else if (((posy=loc_y())%880)<120) dir=90+180*(posy>500); else { if(orange<210) dir=(ang/90)*90; else if (orange<680) dir=ang+80+(b^=1)*190; else dir=ang+25+(b^=1)*235; } } spara(drive(dir,100)); } } } fire() { if (range=scan(oang=ang,10)) { if (scan(ang+350,10)) ang-=1; else ang+=1; if (scan(ang+10,10)) ang+=1; else ang-=1; cannon(ang,(scan(ang,10)<<1)-range); } else { if (range=scan(ang+=340,10)) return cannon(ang,range); if (range=scan(ang+=40,10)) return cannon(ang,range); while (!(range=scan(ang+=20,10))) ; cannon(ang,range); } } spara() { ++t; if ((orange=scan(ang, 10)) ) { if (scan(ang-9,4)) { if (scan(ang-=13,4)) { if(scan(ang-3,fp)) ang-=fp; else ++ang; } else if (scan(ang-fp,fp)) ang-=fp; } else if(scan(ang+9,fp)) { if (scan(ang+=13,fp)) ang+=fp; else --ang; } else if(scan(ang+4,fp)) ang+=fp; else --ang; } else if ((orange=scan(ang-=20,10))) { if (scan(ang-9,10)) { if (scan(ang-=13,fp)) ang-=fp; else ++ang; } else if(scan(ang+9,10)) ang+=6; } else if ((orange=scan(ang+=40,10))) { if (scan(ang+9,10)) ang+=9; } else if (!(orange=scan(ang+=20,10))) { if ((orange=scan(ang+=21,10))) { if (orange>900) { if(!att) ang+=41; return; } } else { if (!(scan(ang+=21,10))) ang+=40; return; } } if (range=scan(ang,10)){ cannon (ang, range*165/(165+orange-range) ); if(att); else if(range>720) if(range>orange || range>900) { return ang+=41; } } } runX() { dir=180*!posx; if(posx) { while(loc_x()<905) fire(drive(dir,100)); while(loc_x()<950) drive(dir,100); } else { while(loc_x()> 95) fire(drive(dir,100)); while(loc_x()> 50) drive(dir,100); } stop(); } runY() { dir=270-180*posy; if(posy) { while(loc_y()<905) fire(drive(dir,100)); while(loc_y()<950) drive(dir,100); } else { while(loc_y()> 95) fire(drive(dir,100)); while(loc_y()> 50) drive(dir,100); } stop(); } corner() { if (speed()) stop(); if ((flag>>4)^posx^posy) runY(runX()); else runX(runY()); } main() /* Inizializza alcune variabili ed innesca la routine principale */ int dperf; { corner(posx=loc_x(posy=(loc_y(tl=td=32))>499)>499,fp=3); radar(deg2=(dvector=(dscan=deg1=(90*((posy<<1)+(posx^posy))))+30)+70); dvector|=((dvector+30)<<16); dscan|=((deg1+70)<<16); while (1) { dperf=((dscan>>flag)&65535)+1; drive(dir=(dvector>>flag)&65535,100); if (scan(dperf,10)) { ang=dperf; while(scan(ang, 10)>(600+damage())) fire(); corner(); if ((d=damage()-d)>dmax) { dmax=d; flag^=16; } } else { while(t<14) spara(); corner(tl=timer); } if (++timer>tl) { radar(tl=timer+(td>>=1)+1); } } }