1992/mimo6new.r
01 | /*************************************************************************/ |
02 | /** NOME ROBOT: MIMO6NEW ** MIMO6NEW si posiziona sul **/ |
03 | /** DATA : 01 - 09 - 1992 ** margine superiore del campo di **/ |
04 | /** AUTORE : Roberto Infante ** battaglia, e si muove in senso **/ |
05 | /** ** orizzontale. La funzione di **/ |
06 | /** (studente) ** sparo, fuoco(), fa in modo che **/ |
07 | /** ** nel caso in cui venga individua-**/ |
08 | /** ** to un nemico la mira viene **/ |
09 | /** ** progressivamente migliorata. **/ |
10 | /*************************************************************************/ |
11 |
12 | int Range, Old_Range, Ang, Dir, Agg_Ang; |
13 |
14 | main() |
15 | { |
16 | drive(90, 100); /* posizionamento iniziale */ |
17 | while (loc_y() < 975) |
18 | fuoco(); |
19 |
20 | Dir = -180; |
21 |
22 | while (1) /* ciclo principale */ { |
23 | Dir = (Dir + 180) % 360; /* cambia la direzione */ |
24 |
25 | drive(Dir, 0); |
26 | while (speed() > 49) |
27 | fuoco(); |
28 | drive(Dir, 100); |
29 | while (((loc_x() < 750 && Dir == 0) || |
30 | (loc_x() > 250 && Dir == 180)) && speed()) |
31 | fuoco(); /* spara mentre si muove */ |
32 | } |
33 | } |
34 |
35 |
36 | fuoco() |
37 | { |
38 | if (Range && Range < 701) { |
39 | Ang += 5 - (scan(Ang - 5, 5) != 0) * 10; /* migliora la mira*/ |
40 | Ang += 3 - (scan(Ang - 3, 3) != 0) * 6; |
41 |
42 | Old_Range = Range; |
43 |
44 | if ((Range = scan(Ang, 10)) > 40) |
45 | cannon(Ang, Range + (Range - Old_Range + |
46 | cos (Ang - Dir) / 2000) * Range / 325); /* spara !! */ |
47 | else |
48 | cannon(Ang, 55); |
49 | } else |
50 | { |
51 | Agg_Ang -= 23; |
52 | if (!(Range = scan(Ang = Dir, 10))) /* cerca nemici right...*/ |
53 | if (!(Range = scan(Ang = Dir + 180, 10))) /*... & left */ |
54 | while (!(Range = scan(Ang = 180 + Agg_Ang, 10))) { |
55 | /* cerca nemici in mezzo */ |
56 | Agg_Ang += 20; |
57 | if (Agg_Ang >= 180) |
58 | Agg_Ang = 0; |
59 | } |
60 |
61 | if (Range < 60) |
62 | Range = 60; |
63 |
64 | cannon(Ang, 7 * Range / 8); /* spara immediatamente !! */ |
65 | } |
66 | } |