1993/torneo.r
01 | /* |
02 | Sabbioni Luca |
03 |
04 | Il "robot" si muove lungo la diagonale secondaria del campo di battaglia |
05 | scandagliandolo a 360 gradi. La routine di sparo provvedde a modificare |
06 | il range del cannone in funzione della differenza delle distanze dai robot |
07 | nemici rilevate precedentemente. |
08 | */ |
09 |
10 |
11 | int range,orange,dir; |
12 |
13 |
14 | main() |
15 |
16 | { |
17 | /* movimento che permette al robot di raggiungere |
18 | l'angolo in alto a sinistra */ |
19 | |
20 | dir=5; |
21 | drive(180,100); |
22 | while (loc_x()>70) hit(); |
23 | drive(180,0); |
24 | while (speed()>49) ; |
25 | drive(90,100); |
26 | while (loc_y()<940) hit(); |
27 | drive(90,0); |
28 |
29 |
30 | while (1) /* ciclo principale */ |
31 | { |
32 | while (speed()>49) ; |
33 | |
34 | /* movimento in diagonale dall'alto verso il basso */ |
35 |
36 | drive(315,100); |
37 | while (loc_y()>80 && speed()>0) hit(1); |
38 | drive(315,0); |
39 | while (speed()>49) ; |
40 |
41 | /* movimento in diagonale dal basso verso l'alto */ |
42 |
43 | drive(135,100); |
44 | while (loc_y()<920 && speed()>0) hit(0); |
45 | drive(135,0); |
46 | } |
47 | } |
48 |
49 | hit(ddir) /* procedura di sparo */ |
50 | { |
51 | int ddir; |
52 |
53 | if ((range=scan(dir,10))) |
54 | { |
55 | if (range==orange) |
56 | if (ddir) |
57 | { |
58 | if ( sin (dir)>0 && cos (dir)<0) cannon(dir,7*range/8); |
59 | else if ( sin (dir)<0 && cos (dir)<0) cannon(dir,8*range/7); |
60 | else cannon(dir,range); |
61 | } |
62 | else |
63 | { |
64 | if ( sin (dir)>0 && cos (dir)<0) cannon(dir,8*range/7); |
65 | else if ( sin (dir)<0 && cos (dir)<0) cannon(dir,7*range/8); |
66 | else cannon(dir,range); |
67 | } |
68 |
69 | if (range>orange) cannon(dir,10*range/9); |
70 | if (range<orange) cannon(dir,7*range/8); |
71 | orange=range; |
72 | } |
73 | else dir+=20; |
74 | } |
75 | |