1993/deluxe_2.r

01/*********************************************************************/
02/*                                                                   */
03/*      Nome robot:     DELUXE_2                                     */
04/*      Autore:         GIANNI PERUGINI                              */
05/*                                                                   */
06/*********************************************************************/
07 
08int count, ang, dam, dir, oldrange1, oldrange2, oldrange3, beta, betam;
09main()
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 
61spara()
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}