1999/lukather.r
001 | /*----------------------------------------------------------------*/ |
002 | /*----------NOME C-ROBOT: LUKATHER --------*/ |
003 | /*----------PROGETTO E REALIZZAZIONE: LORENZO STRAMBI --------*/ |
004 | /* */ |
005 | /*--TATTICA: Lukather si piazza nel pi� vicino angolo libero e ---*/ |
006 | /*-- aspetta, sparando, finche i suoi danni non ----------*/ |
007 | /*-- raggiungono il 20%. A questo punto si dirige verso---*/ |
008 | /*-- l'angolo vicino e vi rimane fino al 50% dei danni ---*/ |
009 | /*-- Poi comincia ad oscillare verticalmente e a sparare -*/ |
010 | /* */ |
011 | /*----------------------------------------------------------------*/ |
012 | /*--COMMENTI:E' il mio primo crobot. Riesce a difendersi bene ma -*/ |
013 | /*-- la routine d'attacco lascia un po a desiderare. -----*/ |
014 | /*-- La funzione attacca() e' presa in prestito da Goblin */ |
015 | /*----------------------------------------------------------------*/ |
016 |
017 |
018 | int x, y, vel, ctr, deg, dist, ang, loc; |
019 | main() |
020 | { |
021 |
022 | x = loc_x(); |
023 | y = loc_y(); |
024 | if (x < 500){ |
025 | if (y < 500){ |
026 | giul();} |
027 | else sul();} |
028 | else { |
029 | if (y < 500){ |
030 | giur();} |
031 | else sur();} |
032 | } |
033 |
034 | giul() |
035 | { |
036 | loc=1; |
037 | if (!scan(225,10)){ |
038 | while (loc_y() > 80) {drive(270,100); attacca(); attacca(); attacca();} |
039 | drive(270,0); |
040 | while (speed()>49); |
041 | while (loc_x() > 80) {drive(180,100); attacca(); attacca(); attacca();} |
042 | drive(180,0);} |
043 | else sul(); |
044 | while (damage() < 20) attacca(); |
045 | scappa(loc); |
046 |
047 | } |
048 |
049 | sul() |
050 | { |
051 | loc=4; |
052 | if (!scan(135,10)){ |
053 | while (loc_y() < 900) {drive(90,100); attacca(); attacca(); attacca();} |
054 | drive(90,0); |
055 | while (speed()>49); |
056 | while (loc_x() > 80) {drive(180,100); attacca(); attacca(); attacca();} |
057 | drive(180,0);} |
058 | else giur(); |
059 | while (damage() < 20) attacca(); |
060 | scappa(loc); |
061 | } |
062 |
063 | giur() |
064 | { |
065 | loc=2; |
066 | if (!scan(315,10)){ |
067 | while (loc_y() > 80) {drive(270,100); attacca(); attacca(); attacca();} |
068 | drive(270,0); |
069 | while (speed()>49); |
070 | while (loc_x() < 900) {drive(0,100); attacca(); attacca(); attacca();} |
071 | drive(0,0);} |
072 | else sur(); |
073 | while (damage() < 20) attacca(); |
074 | scappa(loc); |
075 | } |
076 |
077 | sur() |
078 | { |
079 | loc=3; |
080 | if (!scan(45,10)){ |
081 | while (loc_y() < 900) {drive(90,100); attacca(); attacca(); attacca();} |
082 | drive(90,0); |
083 | while (speed()>49); |
084 | while (loc_x() < 900) {drive(0,100); attacca(); attacca(); attacca();} |
085 | drive(0,0);} |
086 | else giul(); |
087 | while (damage() < 20) attacca(); |
088 | scappa(loc); |
089 | } |
090 |
091 |
092 |
093 | scappa(loc) |
094 |
095 | { |
096 | if (loc==1 || loc==2){ |
097 | while (loc_y() < 900) {drive(90,100); attacca();} |
098 | drive(90,0); |
099 | while (damage() < 50) attacca(); |
100 | while (1) |
101 | { |
102 | while (loc_y() > 130) {drive(270,100); attacca();}drive(270,0); |
103 | while (loc_y() < 900) {drive( 90,100); attacca();}drive( 90,0); |
104 | } |
105 | } |
106 | else { |
107 | while (loc_y() > 130) {drive(270,100); attacca();} |
108 | drive(270,0); |
109 | while (damage() < 50) attacca(); |
110 | while (1) |
111 | { |
112 | while (loc_y() < 900) {drive( 90,100); attacca();}drive( 90,0); |
113 | while (loc_y() > 130) {drive(270,100); attacca();}drive(270,0); |
114 | } |
115 | } |
116 | } |
117 |
118 | attacca() |
119 |
120 | { |
121 | int rng,orng; |
122 |
123 | if ((rng=scan(deg, 10))) { |
124 | if (scan(deg-7,4)) { |
125 | if (scan(deg-=7-2,2)) { |
126 | if (scan(deg-=2-1,1)) deg-=1; |
127 | } |
128 | else if (scan(deg+2,2)) deg+=2; |
129 | } |
130 | else if (scan(deg+7,4)) { |
131 | if (scan(deg+=7+2,2)) deg+=2; |
132 | } |
133 | else if (scan(deg+2,2)) deg+=2; |
134 | } |
135 | else if ((rng=scan(deg-=20,10))) { |
136 | if (scan(deg-7,4)) { |
137 | if (scan(deg-=7-2,2)) deg-=2; |
138 | } |
139 | else if (scan(deg+7,4)) deg+=7; |
140 | } |
141 | else if ((rng=scan(deg+=40,10))) { |
142 | if (scan(deg-7,4)) deg-=7; |
143 | } |
144 | else if (!(rng=scan(deg+=20,10))) { |
145 | if (!(rng=scan(deg+=20,10))) { |
146 | deg+=20; |
147 | if (!(scan(deg,10))) deg+=40; |
148 | } |
149 | else { |
150 | cannon(deg,7*rng/8); |
151 | if (rng>710) deg+=60; |
152 | } |
153 | deg%=360; |
154 | return ; |
155 | } |
156 | if (orng=scan(deg,10)){ |
157 | |
158 | cannon (deg, orng*183/(183+rng-orng) ); |
159 | if (orng>710) deg+=60; |
160 | } |
161 | } |