1993/isaac.r
01 | /* == Isaac == di Federico Macchi 17/07/1993 |
02 |
03 | Questo robot si muove velocemente sulla diagonale che va dall'angolo |
04 | in basso a sinistra a quello in alto a destra, in modo da non essere |
05 | mai molto lontano dagli altri robot. Spara in continuazione correggendo |
06 | il tiro di un 10% sulla distanza, a seconda che il robot nemico si stia |
07 | allontanando o avvicinando |
08 | */ |
09 |
10 | int ang, newrange, oldrange; |
11 |
12 | main() |
13 | { |
14 | ang=0; |
15 | drive(180,100); /* Si porta verso l'angolo |
16 | in basso a sinistra */ |
17 | while (loc_x()>69 && speed()) spara(); |
18 | drive(270,0); |
19 | while (speed()>49) spara(); |
20 | drive(270,100); |
21 | while (loc_y()>69 && speed()) spara(); |
22 | drive(180,0); |
23 |
24 | while (1) { /* Routine di movimento principale |
25 | lungo la diagonale */ |
26 | drive(45,0); |
27 | while (speed()>49) spara(); |
28 |
29 | drive(45,100); |
30 | while (loc_x()<931) spara(); |
31 |
32 | drive(225,0); |
33 | while (speed()>49) spara(); |
34 |
35 | drive(225,100); |
36 | while (loc_x()>69) spara(); |
37 | } |
38 | } |
39 |
40 | spara() |
41 | { |
42 | if (newrange=scan(ang,10)) { /* Routine unica di sparo */ |
43 | if (newrange>oldrange) { |
44 | cannon(ang,newrange*11/10); |
45 | oldrange=newrange; |
46 | } |
47 | else { |
48 | cannon(ang,newrange*9/10); |
49 | oldrange=newrange; |
50 | } |
51 | } |
52 | else |
53 | ang=(ang+20)%360; |
54 | } |