2015/pippo15b.r
01 | /* |
02 | Pippo15b.r |
03 | Torneo: Micro |
04 |
05 | Strategia: |
06 | Nessuna, solo che mi piace la formula per il calcolo dell'angolo di movimento. |
07 | Come ho visto che fanno molti robot, regola l'angolo di movimento in funzione |
08 | dell'angolo di sparo. |
09 | Se � uno scontro 2v2 utilizzando tutto il campo, altrimenti restando solo nel suo |
10 | quadrante. |
11 |
12 |
13 | ciao |
14 |
15 | Andrea Creola |
16 | a.creola@libero.it |
17 | www.baragin.it |
18 | */ |
19 | int rng, |
20 | deg, |
21 | orng, |
22 | dir, |
23 | un1, |
24 | ody, |
25 | od, |
26 | tt, |
27 | x, |
28 | y, |
29 | px1, |
30 | px2, |
31 | py1, |
32 | py2; |
33 |
34 | main() |
35 | { |
36 | tt=deg=0; |
37 | while (deg<400) if (scan(deg+=25,20)) ++tt; |
38 | if (tt<2) |
39 | { |
40 | px1=py1=200; |
41 | px2=py2=800; |
42 | } |
43 | else |
44 | { |
45 | px1=200+(loc_x()>500)*300; |
46 | py1=200+(loc_y()>500)*300; |
47 | px2=px1+300; |
48 | py2=py1+300; |
49 | } |
50 |
51 | while (1) |
52 | { |
53 | dir=(dir=(dir=180*((x=loc_x())>px2)+1*(x<px1))+ |
54 | (!dir)*(270*((y=loc_y())>py2)+90*(y<py1)))+ |
55 | (!dir)*(deg+180*(rng<150)); |
56 | fuoco(drive(dir,100)); |
57 | } |
58 | } |
59 |
60 | fuoco() |
61 | { |
62 | if (rng=scan(deg,10)) |
63 | { |
64 | if (scan(deg-8,5)) deg-=5; |
65 | else if (scan(deg+8,5)) deg+=5; |
66 | else if (scan(deg,1)) ; |
67 | else if (scan(deg-=3,2)) ; |
68 | else deg+=6; |
69 | |
70 | cannon(deg,scan(deg,10)*2-rng*7/8); |
71 | } |
72 | else |
73 | { |
74 | if (rng=scan(deg+=20,10)); |
75 | else if (rng=scan(deg-=40,10)); |
76 | else while (!scan(deg,10)) deg+=110; |
77 | } |
78 | } |