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*/
19int 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 
34main()
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 
60fuoco()
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}