/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$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 : 10.0 Author : Maurizio Camangi Begin : 26-09-2012 Revision : 26-09-2012 Hal9013 è un mix della versione preliminare di Jedi12 ridotta, e una leggera modifica di Hal9012. Non è stato, in pratica, veramente mai testato. Hal9013 è 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 ma debole tenacia - diversi anni fa e ripresa nel 2010 dopo una botta di nostalgia. Hal9013 perde l'uso delle variabili bidimensionali (vettori): coreografiche e superflue. 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, /* 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, /* Timer per il conteggio dei nemici */ sc, /* Scansione cerca nemici sul lato di oscillazione */ enemies, /* Conta nemici superstiti */ t,b, /* Timer oscillazione */ i,td,tl,m,/* Variabili di utilità */ deg1 /* Limite inferiore di scansione per contare i nemici */ ; stop() { fire(dir,t=0); while(speed()>59) ; } fastradar() /* Conta nemici fast */ { enemies=3 -(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) ; } runX() { dir=180*!posx; if(posx) { while(loc_x()<910) fire(dir,100); while(loc_x()<950) drive(dir,100); } else { while(loc_x()> 90) fire(dir,100); while(loc_x()> 50) drive(dir,100); } stop(); } runY() { dir=270-180*posy; if(posy) { while(loc_y()<910) fire(dir,100); while(loc_y()<950) drive(dir,100); } else { while(loc_y()> 90) fire(dir,100); while(loc_y()> 50) drive(dir,100); } stop(); } corner() { if (speed()) stop(); if (flag^posx^posy) runY(runX()); else runX(runY()); } fire(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+m*(ang-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; } } int look(a) { if (scan(a,10)) ; else if (scan(a+=20,10)); else return 0; ang=a; return 1; } main() /* Inizializza alcune variabili ed innesca la routine principale */ int abra,bula,cadabra; { while(1) { corner(posx=loc_x(posy=(loc_y(tl=td=32)>499))>499); fastradar(deg1=(90*((posy<<1)+(posx^posy)))); while (enemies<1) /* fase 1 */ { dir=deg1+(30<840) fire(dir,100); corner(); } else if (scan(dir,10)) { fire(ang=dir,100); while(scan(ang,10)>660) fire(dir,100); corner(); } else { while(++t<6) fire(dir,100); corner(tl=timer); } if ((d=damage()-d)>dmax) { dmax=d; flag^=1; } if ((++timer>tl)&&(range>400)) { fastradar(tl=timer+(td>>=1)+1); } } while(enemies<=1) /* fase 2 */ { if (look(deg1)) { dir=deg1+(30<680) fire(dir,100); corner(); flag^=1; } else if (scan(dir,10)) { fire(ang=dir,100); while(scan(ang,10)>640) fire(dir,100); corner(); flag^=1; } else { while(++t<6) fire(dir,100); corner(); if ((d=damage()-d)>dmax) { dmax=d; flag^=1; } } if ((++timer%2)&&(range>400)) { fastradar(); } } else { dir=deg1; abra=(posy<<1)|(posx^posy); t=0; while(t<4) { if (abra&1) bula=loc_y(); else bula=loc_x(); if (abra&2) cadabra=bula>180; else cadabra=bula<820; if (cadabra) fire(dir,100); else { fire(dir+=90,0); if (scan(dir,10)) ang=dir; ++abra; timer+=++t; } } fastradar(); } } /* F2F di Proton */ while(m=1) { /*attacco del f2f*/ 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*(b^=1); fire(dir,100); fire(dir,100); fire(dir,100); } } }