/* ..................................................................,$77777$:..... .................................................................7777777777$.... .,MM...MMM..MMM....MMMMMMMMMM....MMM......... MMM...............7,.........~7... .,MM...MMM..MMM....MMD.....MMM ..MMM..........MMM..............$7...7777777$7$.. .,MM...MMM..MMM. MMN?????MMM...MMM..........MMM.........MMM..77. ........777.. .,MM...MMM..MMM. ..MMMMMMMMMMM .MMM..........MMM..........8...77...7777777$77.. .,MMMMMMMMMMMMM....MMD.. MMM MMMMMMMMMMM .MMMMMMMMMM$......:7.. ......~7~.. ................................... ... ... ........... ...777777777777~... ................. ...........................$7777777$..... .............. ................. ... .............. ........ ................................ ....... ..... ...... .. ..... ..... ...... ........:=,:~+...... .. ......=+++I?O$8D8DZ$ON~..... ... ....77?I77888OO?NNNI8NDMZN7.... .. ..IIIZIDZZI8ODNMMN8N8ONMMM7OM.... ...DDD8O887=ZMMDNNNMONMMDDNM=?N.... ....8DND8DD$?+DNMNDOONN8NNN87=?N.... ...$MDDDD7==+7DOZDNNNNO7I+==+N.... ...:?DDDD7IZ+I8Z..+DDDDZI7ID... .......I8DO8Z8O......... ... . ...........?8D8............ ............ZDOOO~........... .. ..... .............DDMOD............ .... .. ..... ..+=~,..... ...7ZZD~.............. ....... .... ..~~:~~,?7MND+?Z$O8ZDIZZZZ~==IO,........... ......... .... .:::::~~=I$OON$~::~=7DD8OZOOO88OOOO77$$Z$77I7........... .... .~::~:::~~?=~=~:::~::::I7Z$ODZ7+I+7+??+++=$=:: .......... .... .$O7??~~+=,?::~::::::,:?I$:I+DZ=~I+Z=$O8??$7O8~............ .... Z7777777$Z?+=::~:=,,,,,77,~+DDZ=788OD8DZ88O7I8=+8I?=....... .... .ZZ$$O$7777II$7I$Z,,..,,::::$8O=IN8DDDNN88D8887?8?+8OI?++:.. .... .OZZ$Z$$$$777II77I::,,,,:,,:,?88=Z~?$I8OZ?II$7O+8Z+87ODD8??.. .... .,$ZZ$ZZ$$$$$7I$$7I,,,,,,,..,,~8O??7$?+$77O$8ZOONZ..=OO8DD8+.. .......$ZZZZZ$$Z$$$$$$$$~,:,,:,,,,,,:ZZI?I+I+7$8ZO$I7DNI....NDONN8O. ......7OZZOZOO$$$$$$$$$$~,,:,,.,,,,:$Z87++II7$77IZI778N?....DDD~8O:. ......NZOOZZZZZZZZZ$$$7~,:,:,::,,,,,O878N$7?++???7???ON$...I888IOI . ......OOOOODZZZZZZ$Z$$?I~,,,,,,::,,ZZD7$7===+++++I+==ZD7.......:O... ... ..D88OOOOO88ZZZ$II?I+=:==,:::ZID$7II=7788O$D8$OZO8$............ .... ....:DD8OOZOZZ8II?IIZI?=~~~+8DOO7=I+7O8MO778DDD$OZO........... .... .. .=ND88OO77$IIII?III??88NDZI~I+ZO8DODZO7DND8DO$.......... .... 8DN8DD8DD88$$Z$IIII?OO88DD$D8DD8ONOMD88ZOOONN$O+........ .DDDDON8DOOONN88O$$$7MDZINNOO8D88N8O8DONN88ZDMDMND8....... .DD8DDDD8ON8DD8MDM8DDNNNNN88DNN88N88ZOZDDNON8N$?7NNO...... ..D8ND8D8ODNDDD8NDND8DNNNN8NMMNNO$NNNOD8OONMMMNOZ88DDO. ..MDDODDDMMDNMNDNNNDMNMNNN.,,,NN88O888D8$D..O8D8OZ7ONN+ .DD8NNNNMNNNNNNMMNMNMND$II?Z8O8ND8NMDD?8OD8DNNDM?ONND. ~==?NNNDNNNNNNNMNNND8OOZ$$77O$Z8N888D88$ZND8DNDZ$O$88N~. ..=+?I77$ODDNND88OOOOOZZZZ$$$8DNDDODZD87$$ODZDMN87ZNDDD: ,===+??III77$$$$$ZZZZZZ$$$$$$D88O888DD8O$Z88OOZ8MD8NN8DN.. .~==+??III777777$$$$$$$$$$$$$$DNNDDN8OZZ888DOOON8MMDDDN. .... . ,~+??IIIIII777777777777777IDNDNDDDDDDDDN8O888MDND8N~..... .... .....,,,,~????IIIIIIIIII=,,,,.~IINDDDNNDONN8DOMN888DNI,,,,.... .... ........,,,,,:+???+~,,,,,,,,,,+??IIOMNNDDNON8N888N=:,,,,,,,.... .... ..... ,,,,,,,,,,,,,,,,,,,,,,,,~???III7$8NNDNDNI,,,,,.,.,,,.. .... .......,,,,,,,,,,.,,..,,,,,,,,,,,,,:=????III,,..,,,,,,.,,,,. .,,,,,,,,,,,,,,..,.........,,.,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.. .,,,,,,,,,,,,,,.............,,,,,,,,,,,,,,,,,,,,,,,..,,,,,.. .,,,,,,,,,,,,,,,.,..........,,,,....,,,,,,,,.,,,.,,,..,,,. . ,,,,,,,,,,,,,,,,,,..........,,,,.....,,,,,,,,,,,,,,,,,,. .~ ++=.~=. .,,,,,,,,,,,,,,,,............,,,.....,,,,,,,,,,,,,,... . ... .. ,,,,,,,,,,,,,,,,............,,,,,,..,,,,,,,,,,,,,.... */ /* Crobots : Wall-E Type : Micro Version : 1.0 Author : Maurizio Camangi Begin : ??-04-2010 Revision : 12-04-2010 Wall-E è un Jedi9 (o un Hal9000) molto più semplice. Mantiene il movimento oscillatorio a range variabile. Range più ampio (fase I) con danni < 50%. Range meno ampio (fase II) con danni >= 50%. Nessun controllo sui danni subiti durante la singola oscillazione. F2F : quadrato semplice. */ int ang, /* Angolo di scanning */ oang, /* Angolo di scanning precedente */ range, /* Gittata corrente */ orange, /* Gittata precedente */ dir, /* Direzione del cammino */ posx, posy, /* Variabili temporanee ad un bit salva posizione */ dvector, /* Array bidimensionale */ x,y, /* Coordinate del corner */ limit, /* Limite gittata */ flag, /* Flag di stato */ m, /* Flag correggi ampiezza sparo */ timer, /* Timer e numero nemici */ deg, /* Inizio scansione conta nemici */ i; /* Variabile temporanea */ fire() { drive(dir,100); if ((range=scan(oang=ang,10))&&(range 6400) fire(); drive(dir, i=0); } turn() { drive(dir+=90,49); } main() /* Inizializza alcune variabili ed innesca la routine principale */ { y=20+960*(posy=loc_y(posx=loc_x(limit=835)>500)>500); corner(x=20+960*posx); dvector=(deg=(90*((posy<<1)+(posx^posy))))+30; dvector|=((dvector+30)<<16); while (1) { while((timer<2) && (i < 140)) { timer+=(scan(deg+i,10)>0); i+=20; } if (timer<2) { limit=1999; dir=0; while(m=1) { while(loc_x()<650) fire(); turn(); while(loc_y()<650) fire(); turn(); while(loc_x()>350) fire(); turn(); while(loc_y()>350) fire(); turn(); } } else timer=8<<(damage(dir=(dvector>>flag)&65535)<50); while(--timer) fire(); corner(drive(dir, flag^=16)); } }