/* First two lines are for */ /* Crobots Amiga compatibility */ /* __ /\ .-" / / ; .' .' : :/ .' \ ;-.' .--""""--..__/ `. .' .' `o \ / ` ; : \ : .-; -. `.__.-' : ; \ , ; '._: ; : ( \/ .__ ; \ `-. ; "-,/_..--"`-..__) '""--.._: ###### # ###### ###### ### ####### # # # # # # # # # # # # # # # # # # # # ###### # # ###### ###### # # # # ####### # # # # # # # # # # # # # # # # # # # # ###### ###### ### # ####### # # ###### # # # # # ##### # # # # # # ####### # ▄████▄ ▄▄▄ ▓█████ ██▀███ ▄▄▄▄ ▄▄▄ ███▄ █ ███▄ █ ▒█████ ▄████ ▒██▀ ▀█ ▒████▄ ▓█ ▀ ▓██ ▒ ██▒▓█████▄ ▒████▄ ██ ▀█ █ ██ ▀█ █ ▒██▒ ██▒ ██▒ ▀█▒ ▒▓█ ▄ ▒██ ▀█▄ ▒███ ▓██ ░▄█ ▒▒██▒ ▄██▒██ ▀█▄ ▓██ ▀█ ██▒▓██ ▀█ ██▒▒██░ ██▒▒██░▄▄▄░ ▒▓▓▄ ▄██▒░██▄▄▄▄██ ▒▓█ ▄ ▒██▀▀█▄ ▒██░█▀ ░██▄▄▄▄██ ▓██▒ ▐▌██▒▓██▒ ▐▌██▒▒██ ██░░▓█ ██▓ ▒ ▓███▀ ░ ▓█ ▓██▒░▒████▒░██▓ ▒██▒░▓█ ▀█▓ ▓█ ▓██▒▒██░ ▓██░▒██░ ▓██░░ ████▓▒░░▒▓███▀▒ ░ ░▒ ▒ ░ ▒▒ ▓▒█░░░ ▒░ ░░ ▒▓ ░▒▓░░▒▓███▀▒ ▒▒ ▓▒█░░ ▒░ ▒ ▒ ░ ▒░ ▒ ▒ ░ ▒░▒░▒░ ░▒ ▒ ░ ▒ ▒ ▒▒ ░ ░ ░ ░ ░▒ ░ ▒░▒░▒ ░ ▒ ▒▒ ░░ ░░ ░ ▒░░ ░░ ░ ▒░ ░ ▒ ▒░ ░ ░ ░ ░ ▒ ░ ░░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ Crobot : RabbitC Type : Classic Version : 1.2 Author : Maurizio Camangi Begin : 10-10-2024 Revision : 31-10-2025 TIM: Behold the cave of Caerbannog! ARTHUR: Right! Keep me covered. GALAHAD: What with? ARTHUR: W-- just keep me covered. TIM: Too late! [dramatic chord] ARTHUR: What? TIM: There he is! ARTHUR: Where? TIM: There! ARTHUR: What, behind the rabbit? TIM: It is the rabbit. ARTHUR: You silly sod! TIM: What? ARTHUR: You got us all worked up! TIM: Well, that's no ordinary rabbit! ARTHUR: Ohh. TIM: That's the most foul, cruel, and bad-tempered rodent you ever set eyes on! ROBIN: You tit! I soiled my armor I was so scared! TIM: Look, that rabbit's got a vicious streak a mile wide! It's a killer! GALAHAD: Get stuffed! TIM: He'll do you up a treat, mate. GALAHAD: Oh, yeah? ROBIN: You mangy Scots git! TIM: I'm warning you! ROBIN: What's he do, nibble your bum? TIM: He's got huge, sharp-- eh-- he can leap about-- look at the bones! ARTHUR: Go on, Bors. Chop his head off! BORS: Right! Silly little bleeder. One rabbit stew comin' right up! TIM: Look! [squeak] BORS: Aaaugh! [dramatic chord] [clunk] ARTHUR: Jesus Christ! TIM: I warned you! ROBIN: I done it again! TIM: I warned you, but did you listen to me? Oh, no, you knew it all, didn't you? Oh, it's just a harmless little bunny, isn't it? Well, it's always the same. I always tell them-- ARTHUR: Oh, shut up! TIM: Do they listen to me? ARTHUR: Right! TIM: Oh, no... KNIGHTS: Charge! [squeak squeak squeak] KNIGHTS: Aaaaugh!, Aaaugh!, etc. ARTHUR: Run away! Run away! KNIGHTS: Run away! Run away!... TIM: Ha ha ha ha! Ha haw haw! Ha! Ha ha! ARTHUR: Right. How many did we lose? LANCELOT: Gawain. GALAHAD: Ector. ARTHUR: And Bors. That's five. GALAHAD: Three, sir. ARTHUR: Three. Three. And we'd better not risk another frontal assault. That rabbit's dynamite. ROBIN: Would it help to confuse it if we run away more? ARTHUR: Oh, shut up and go and change your armor. GALAHAD: Let us taunt it! It may become so cross that it will make a mistake. ARTHUR: Like what? GALAHAD: Well... ooh. LANCELOT: Have we got bows? ARTHUR: No. LANCELOT: We have the Holy Hand Grenade. ARTHUR: Yes, of course! The Holy Hand Grenade of Antioch! 'Tis one of the sacred relics Brother Maynard carries with him! Brother Maynard! Bring up the Holy Hand Grenade! MONKS: [chanting] Pie Iesu domine, dona eis requiem. Pie Iesu domine, dona eis requiem. Pie Iesu domine, dona eis requiem. Pie Iesu domine, dona eis requiem. ARTHUR: How does it, um-- how does it work? LANCELOT: I know not, my liege. ARTHUR: Consult the Book of Armaments! BROTHER MAYNARD: Armaments, chapter two, verses nine to twenty-one. SECOND BROTHER: And Saint Attila raised the hand grenade up on high, saying, 'O Lord, bless this Thy hand grenade that, with it, Thou mayest blow Thine enemies to tiny bits in Thy mercy.' And the Lord did grin, and the people did feast upon the lambs and sloths and carp and anchovies and orangutans and breakfast cereals and fruit bats and large chu-- MAYNARD: Skip a bit, Brother. SECOND BROTHER: And the Lord spake, saying, 'First shalt thou take out the Holy Pin. Then, shalt thou count to three. No more. No less. Three shalt be the number thou shalt count, and the number of the counting shall be three. Four shalt thou not count, nor either count thou two, excepting that thou then proceed to three. Five is right out. Once the number three, being the third number, be reached, then, lobbest thou thy Holy Hand Grenade of Antioch towards thy foe, who, being naughty in My sight, shall snuff it.' MAYNARD: Amen. KNIGHTS: Amen. ARTHUR: Right! One!... Two!... Five! GALAHAD: Three, sir! ARTHUR: Three! [angels sing] [boom] 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. Zeroth Law. A robot cannot cause harm to humanity or, by inaction, allow humanity to come to harm. ATTENTION THIS C-ROBOT IS MADE OF 100% BITS IN THE UNLIKELY EVENT THAT IT COMES INTO CONTACT WITH ANTI-BITS OF ANY KIND, AN EXPLOSION WILL OCCUR WARNING THE ENTIRE UNIVERSE (INCLUDING THIS C-ROBOT) MIGHT SOMEDAY COLLAPSE INTO AN INFINITELY SMALL POINT IF ANOTHER UNIVERSE WERE TO EMERGE, THE EXISTENCE (AND FUNCTIONING) OF THIS C-ROBOT IN THAT UNIVERSE CANNOT BE GUARANTEED */ int ang,range,dir; fire() { int orange,oang; drive(dir,100); if (scan(ang,10)); else if (scan(ang-=21,10)); else if (scan(ang+=42,10)); else if (scan(ang+=21,10)); else return search(); if (scan(ang-17,10)) ang-=6; if (scan(ang+17,10)) ang+=6; if (orange=refine()) { if (range=refine(oang=ang)) cannon(ang+(ang-oang)*((1200+range)>>9)-(sin(ang-dir)>>14), range*192/(192+orange-range-(cos(ang-dir)>>12))); else if(range=scan(ang-=21,10)) cannon(ang,range); else if(range=scan(ang+=42,10)) cannon(ang,range); else ang+=41; } else if(orange=scan(ang-=21,10)) cannon(ang,orange); else if(orange=scan(ang+=42,10)) cannon(ang,orange); else ang+=41; } refine() { if (scan(ang+13,10)) ang+=4; if (scan(ang-13,10)) ang-=4; if (scan(ang+12,10)) ang+=2; if (scan(ang-12,10)) ang-=2; if (scan(ang+10,10)) ++ang; if (scan(ang-10,10)) --ang; return scan(ang,10); } search() { if ((range=scan(ang-=84,10))) return cannon(ang,range); else if ((range=scan(ang-=21,10))) return cannon(ang,range); else if ((range=scan(ang+=126,10))) return cannon(ang,range); else if ((range=scan(ang+=21,10))) return cannon(ang,range); else if ((range=scan(ang-=168,10))) return cannon(ang,range); else if ((range=scan(ang-=21,10))) return cannon(ang,range); else if ((range=scan(ang+=210,10))) return cannon(ang,range); else if ((range=scan(ang-=231,10))) return cannon(ang,range); else if ((range=scan(ang+=252,10))) return cannon(ang,range); else ang+=41; } qfire(d,v) int d,v; { int orange; drive(d,v); if ((orange=scan(ang, 10)) ) { if (scan(ang-9,4)) { if (scan(ang-=13,4)) { if(scan(ang-6,5)) ang-=6; } else if (scan(ang-5,5)) --ang; } else if(scan(ang+9,5)) { if (scan(ang+=13,5)) ang+=5; } else if(scan(ang+4,5)) ang+=5; else ang-=2; } else if ((orange=scan(ang-=21,10))) { if (scan(ang-9,10)) { if (scan(ang-=13,5)) ang-=5; } else if(scan(ang+9,10)) ang+=6; } else if ((orange=scan(ang+=42,10))) { if (scan(ang+9,10)) ang+=12; } else if ((orange=scan(ang+=21,10))); else { if ((orange=scan(ang+=21,10))) return cannon(ang,range=orange); range=0; return ang+=41; } if (range=scan(ang,10)){ cannon (ang, range*145/(145+orange-range) ); } else if(range=scan(ang-=21,10)) cannon(ang,range); else if(range=scan(ang+=42,10)) cannon(ang,range); else ang+=41; } degree(xx,yy) int xx,yy; { return(dir=(360+((xx-=loc_x())<0)*180+atan(((yy-loc_y())*100000)/xx))); } main() { int posx,posy; /* F2F inspired by loneliness and carillon with ..erm.. "minor" changes */ fire(qfire(dir=90*((posy=loc_y(posx=loc_x()>499)>499)<<1)|(posx^posy)+40,100)); while(1) { if(range>459) fire(); if (((posx=loc_x(posy=loc_y()))%840)<160) dir=20+320*(posy>=500)+180*(posx>=500); else if ((posy%840)<160) dir=70+40*(posx>=500)+180*(posy>=500); else dir=degree(rand(1000), rand(1000)); /* completely random destination! */ qfire(dir,100); if(scan(ang-15,10)) ang-=4; if(scan(ang+15,10)) ang+=4; qfire(dir,100); } } /* Well, that's no ordinary rabbit! */