1993/horse.r

01/* Horse.r by Summa Giovanni
02 
03    Horse si muove su 3 lati dell' arena con un movimento a U o ferro
04    di cavallo sparando con una portata leggermente allungata o accorciata
05    a seconda del verso di marcia
06*/
07int Direz,Ang;
08main()
09{
10 while (1)
11 {
12  drive (0, 100);
13  Ang=200;
14  Direz=Ang;
15  while (loc_x() < 940)
16          seek2();
17  drive (90, 0);
18  frena2();
19  drive (90, 100);
20  Ang=290;
21  Direz=Ang;
22  while (loc_y() < 940)
23          seek2();
24  drive (180, 0);
25  frena2();
26  drive (180, 100);
27  Ang=360;
28  Direz=Ang;
29  while (loc_x() > 80)
30          seek2();
31  drive (0, 0);
32  frena();
33  drive (0, 100);
34  Ang=160;
35  Direz=Ang;
36  while (loc_x() < 940)
37          seek();
38  drive (270, 0);
39  frena();
40  drive (270, 100);
41  Ang=70;
42  Direz=Ang;
43  while (loc_y() > 80)
44          seek();
45  drive (180, 0);
46  frena();
47  drive (180, 100);
48  Ang=0;
49  Direz=Ang;
50  while (loc_x() > 80)
51          seek();
52  drive (0, 0);
53  frena();
54 }
55}
56/* Funzioni di scansione e attacco */
57seek()
58{
59 int Portata;
60 if (Portata=scan(Direz,10))
61     cannon(Direz,Portata * 7 / 8);
62 Direz+=20;
63 if (Direz > (Ang+199))
64     Direz=Ang;
65}
66seek2()
67{
68 int Portata;
69 if (Portata=scan(Direz,10))
70     cannon(Direz,Portata * 8 / 7);
71 Direz-=20;
72 if (Direz < (Ang - 200))
73     Direz=Ang;
74}
75frena()
76{
77        while (speed() > 49)
78                seek();
79}
80frena2()
81{
82        while (speed() > 49)
83                seek2();
84}
85