/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$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 : 11.0 Author : Maurizio Camangi Begin : 25-04-2015 Revision : 26-04-2015 Whilst no-one usually gives a darn about reading these comments I can write anything I want regardless of the fact this is not my mother-tongue and my English is awful. HAL9000 v.11 is an improved (!) version of HAL9000 v.7 (2010) which is the best HAL9000 series robot on the KOTH 4vs4. Differences: - Modern book-like F2F - Simplified routine to count enemies 1. A robot may not injure a human being or, through inaction, allow a human being to come to harm. 2. A robot must obey orders given to it by human beings, except where such orders would conflict with the First Law. 3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law. */ int ang, oang, range, orange, d, dir, posx, posy, x, y, dist, flag, attack, timer, clock, deg1; fastradar() /* Conta nemici fast */ { return ( (scan(deg1, 10)!=0) +(scan(deg1+20, 10)!=0) +(scan(deg1+40, 10)!=0) +(scan(deg1+60, 10)!=0) +(scan(deg1+80, 10)!=0) +(scan(deg1+100,10)!=0) ); } stop() { fire2(dir,0); while( speed() > 59 ); } 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(); if ( ++timer%12 == 1 ) { if ( fastradar() < 2 ) { while(1) { if (((posx=loc_x())%880)<120) dir=180*(posx>500); else if (((posy=loc_y())%880)<120) dir=90+180*(posy>500); else if (range>610) dir=ang+25; else if (range<180) dir=ang+195; else dir=ang+180*(clock^=1); fire2(dir,100); fire2(dir,100); fire2(dir,100); } } if( damage() < 60 ) attack|=2; else attack=0; } } int radar3(sc) int sc; { if ( scan(sc, 10) ) ; else if ( scan(sc+=20, 10) ) ; else return 0; ang = sc; return 1; } 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); } fire2(dir,v) { drive(dir,v); if (range=scan(oang=ang,10)) { if (scan(ang-8,5)) { if (scan(ang-=5,2)) ; else ang-=4; } else { if (scan(ang+8,5)) { if (scan(ang+=5,2)) ; else ang+=4; } else { if (scan(ang,1)) ; else if (scan(ang-=3,2)) ; else ang+=6; } } return(cannon((ang<<1)-oang,(scan(ang,10)<<1)-range)); } else { if(range=scan(ang+=20,10)) cannon(ang,range); else if(range=scan(ang-=40,10)) cannon(ang,range); else ang+=80; } } 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 */ { degree(x=20+960*(posx=loc_x()>499), y=20+960*(posy=loc_y()>499)); corner(deg1=90*((posy<<1)|(posx^posy))); while (1) { if (radar3(deg1+70*flag)) { dir=deg1 + (30<d) attack&=~(1<d) { lightsaber(0); } } } else { dir=deg1 + 15 + (60*flag); lightsaber(5); } corner(stop(flag^=1)); } }