2007/mammolo.r
001 | /* |
002 | Nome : Mammolo - macro |
003 | Versione : 1.0 |
004 | Autore : Simone Ascheri |
005 |
006 | Preludio |
007 | ======== |
008 | Biancaneve si � smarrita nel bosco. |
009 | trova la casetta dei sette nani e ci si stabilisce. |
010 | Mammolo non � molto contento e torna a casa dalla mamma, a cui era molto affezionato perche' alla tenera et� di 3 anni gi� gli aveva trovato un'occupazione, mandandolo a lavorare in miniera. |
011 |
012 | Commento |
013 | ======== |
014 |
015 | Trattasi di Fizban... aggiornato???? |
016 | Ho cambiato qualche costante ma non ho nemmeno testato |
017 | */ |
018 |
019 | int vel,r_coord,x_pos,y_pos; |
020 | int ang,oang,a,r,or; |
021 | int time ,run,d,gradi,conta; |
022 | int si,z,oa,lim,cl; |
023 |
024 | main() |
025 | { |
026 | r_coord=822; |
027 | while (run+=conta=gradi=3) |
028 | { |
029 | if (damage()>80) r_coord=837; |
030 | x_pos=(loc_y(y_pos=(loc_x()<(vel=500))*(r_coord-=15*(++ time >6)))<500)*r_coord; |
031 | while ((loc_x()%890)>110) CucchiaioKender(ang=(loc_x()<500)*180); |
032 | vel=0; |
033 | CucchiaioKender(ang); |
034 | while ((loc_y(vel=100)%890)>110) CucchiaioKender(ang=90+(loc_y()<500)*180); |
035 | vel=0; |
036 | CucchiaioKender(ang); |
037 | while (((gradi+=21)<390)&&(conta<12)) if (scan(gradi,10)>0) {++conta;CucchiaioKender(a=ang=gradi);} |
038 | vel=100; |
039 | while (conta<5) |
040 | { |
041 | if (((loc_x()%800)<200)||((loc_y()%800)<200)) |
042 | { |
043 | si=45+180*(loc_y()>500)+90*((loc_x()>500)!=(loc_y()>500)); |
044 | if (((z=(ang-si)%360)*z)>0) |
045 | { |
046 | C(vel=0); |
047 | ang=si; |
048 | C(C(vel=100)); |
049 | } |
050 | } |
051 | else if (r>700) |
052 | { |
053 | if (((z=(ang-a)%360)*z)>25) |
054 | { |
055 | C(vel=0); |
056 | ang=a; |
057 | C(C(vel=100)); |
058 | } |
059 | } |
060 | else if ((speed()>80)) |
061 | { |
062 | C(vel=0); |
063 | ang+=180; |
064 | C(C(vel=100)); |
065 | } |
066 | C(); |
067 | } |
068 | while (--run) |
069 | { |
070 | while (loc_y() <910-x_pos) CucchiaioKender(90); |
071 | while (loc_x() >r_coord-y_pos+90) CucchiaioKender(180); |
072 | while (loc_y() >r_coord-x_pos+90) CucchiaioKender(270); |
073 | while (loc_x() <910-y_pos) CucchiaioKender(0); |
074 | } |
075 |
076 | } |
077 | } |
078 |
079 | CucchiaioKender(dir) |
080 | int dir; |
081 | { |
082 | drive (dir,vel); |
083 | if ((r=scan(a,10))&&(r<850)) |
084 | { |
085 | if (r=scan(a,4)); |
086 | else if (r=scan(a-=7,3)); |
087 | else if (r=scan(a+=14,3)); |
088 | else return ; |
089 | cannon (a,r); |
090 | } |
091 | else |
092 | if (scan(a+=21,10)); |
093 | else |
094 | if (scan(a-=42,10)); |
095 | else |
096 | if (scan(dir,10)) a=dir; |
097 | else |
098 | return (a+=84); |
099 | } |
100 |
101 | C() |
102 | { |
103 | drive (ang,vel); |
104 | if (or=scan(oa=a,10)) |
105 | { |
106 | if (r=scan(a,4)) return cannon(a,3*scan(a,10)-r-or); |
107 | else if (r=scan(a-=7,3)) return cannon(a-6,3*scan(a,10)-r-or); |
108 | else if (r=scan(a+=16,4)) return cannon(a+6,3*scan(a,10)-r-or); |
109 | else return 1; |
110 | } |
111 | else |
112 | if (scan(a+=21,10)); |
113 | else |
114 | if (scan(a-=42,10)); |
115 | else |
116 | return (a+=84); |
117 | } |