1993/deluxe_2.r
01 | /*********************************************************************/ |
02 | /* */ |
03 | /* Nome robot: DELUXE_2 */ |
04 | /* Autore: GIANNI PERUGINI */ |
05 | /* */ |
06 | /*********************************************************************/ |
07 |
08 | int count, ang, dam, dir, oldrange1, oldrange2, oldrange3, beta, betam; |
09 | main() |
10 | { |
11 | beta=5; |
12 | betam=5; |
13 | drive(0,100); /* Va verso il muro EST sparando */ |
14 | while (loc_x()<900) |
15 | spara(); |
16 | while (1) |
17 | { |
18 | count=0; |
19 | dam=damage(); |
20 | while ( ( ++count < 6 ) && ( (damage()-dam) < 25 ) ) |
21 | { |
22 | drive(90, 0); /* Va verso il muro NORD sparando */ |
23 | betam= atan (100000*(979-loc_x())/500); |
24 | dir=90; |
25 | while (speed()>49) |
26 | spara(); |
27 | drive(90, 100); |
28 | while (loc_y()<900) |
29 | spara(); |
30 | drive(270, 0); /* Va verso il muro SUD sparando */ |
31 | dir=270; |
32 | while (speed()>49) |
33 | spara(); |
34 | drive(270, 100); |
35 | while (loc_y()>100) |
36 | spara(); |
37 | } |
38 | count=0; |
39 | dam=damage(); |
40 | while ( ( ++count < 6 ) && ( (damage()-dam) < 25 ) ) |
41 | { |
42 | drive(180, 0); /* Va verso il muro OVEST sparando */ |
43 | betam= atan (100000*(loc_y()-20)/500); |
44 | dir=180; |
45 | while (speed()>49) |
46 | spara(); |
47 | drive(180, 100); |
48 | while (loc_x()>100) |
49 | spara(); |
50 | drive(0,0); /* Va verso il muro EST sparando */ |
51 | dir=0; |
52 | while (speed()>49) |
53 | spara(); |
54 | drive(0,100); |
55 | while (loc_x()<900) |
56 | spara(); |
57 | } |
58 | } |
59 | } |
60 |
61 | spara() |
62 | { |
63 | int range1,range2,alfa; |
64 | if (dir==90||dir==0) |
65 | alfa=360-beta; |
66 | else |
67 | alfa=beta; |
68 | if (range1=scan(dir+alfa,10)) /* Se c'� un robot di fronte.. */ |
69 | { |
70 | if (range1<oldrange1) /* ..spara.. */ |
71 | cannon(dir+alfa,7*range1/8); |
72 | else |
73 | cannon(dir+alfa,7*range1/6); |
74 | oldrange1=range1; |
75 | beta=betam-range1*betam/1000; |
76 | } |
77 | if (range2=scan(540+dir-alfa,10)) /* Se c'� un robot alle spalle.. */ |
78 | { |
79 | if (range2>oldrange2) /* ..spara.. */ |
80 | cannon(540+dir-alfa,7*range2/6); |
81 | else |
82 | cannon(540+dir-alfa,7*range2/8); |
83 | oldrange2=range2; |
84 | beta=betam-range2*betam/1000; |
85 | } |
86 | if ( !range1 && !range2 ) /* ..altrimenti spara agli */ |
87 | { /* eventuali robot che non si */ |
88 | ang-=15; /* trovano lungo i bordi. */ |
89 | while (!(range1=scan(ang,10)) ) |
90 | ang+=20; |
91 | if (range1>oldrange3) |
92 | cannon(ang,7*range1/6); |
93 | else |
94 | cannon(ang,7*range1/8); |
95 | oldrange3=range1; |
96 | } |
97 | } |