1998/traker1.r
001 | /* |
002 | T r a k e r |
003 | ver. 1 |
004 |
005 | di |
006 | Antonio Gallo |
007 |
008 | TATTICA: |
009 | L'autore di !.r diceva che il suo robot era invincibile. |
010 | Tracker e' il frutto di 2 giorni (gli unici che purtroppo ho |
011 | potuto dedicare a cRobots durante tutta l'estate) per dimostrare |
012 | il contrario. |
013 |
014 | TRACKER1 si muove sulle diagonali cercando di colpire !.r nell'angolo. |
015 | In combattimenti a due (TRACKER1 contro !), tracker ha la meglio nel |
016 | 60% dei casi. |
017 |
018 | TRACKER non ha paura dei robot basati su !.r |
019 | TRACKER ha molta paura dei robor che si muovono lungo i bordi. |
020 | */ |
021 |
022 | /* Dichiarezione variabili*/ |
023 | int dir, dx, dy, an1, an2, ap; |
024 | int deg, rng, r, dam; |
025 |
026 | main() |
027 | { |
028 | /* Inizializziazione variabili */ |
029 | dam = 0; |
030 | deg = 0; |
031 | rng=0; |
032 | r=0; |
033 | an1 = 0; |
034 | an2 = 0; |
035 | ap = 10; |
036 | dx = 1; |
037 | dy = 1; |
038 |
039 | /* Inizializziazione direzione di movimento */ |
040 | change(); |
041 |
042 | while (1) { |
043 | if (loc_y()<150) { |
044 | dy=1; |
045 | change(); |
046 | } else { |
047 | if (loc_y()>850) { |
048 | dy=-1; |
049 | change(); |
050 | } |
051 | } |
052 | if (loc_x()<150) { |
053 | dx=1; |
054 | change(); |
055 | } else { |
056 | if (loc_x()>850) { |
057 | dx=-1; |
058 | change(); |
059 | } |
060 | } |
061 |
062 | /* Cerca il bersaglio */ |
063 | track(); |
064 |
065 | /* Se viene colpito cambia leggermente direzione */ |
066 | if (dam != damage() ) { |
067 | dam=damage(); |
068 | dir = dir + ( rand (90)-45 ); |
069 | } |
070 |
071 | drive(dir,100); |
072 | } |
073 | } |
074 |
075 |
076 | /* |
077 | CHANGE: |
078 | Effettua un cambio di direzione se ci stiamo |
079 | avvicinando troppo al bordo del campo |
080 | */ |
081 | change() |
082 | { |
083 | if (dx==1) { |
084 | if (dy==1) dir=45; |
085 | else |
086 | if (dy==-1) dir=315; |
087 | else |
088 | dir=0; |
089 | } else { |
090 | if (dx==-1) { |
091 | if (dy==1) dir=135; |
092 | else |
093 | if (dy==-1) dir=225; |
094 | else |
095 | dir=180; |
096 | } else { |
097 | if (dy==1) dir=90; |
098 | else |
099 | if (dy==-1) dir=270; |
100 | } |
101 | } |
102 | } |
103 |
104 | /* |
105 | TRACK : |
106 | Cerca un bersaglio e spara |
107 | La routine e stata presa da !.r (se ricordo bene) |
108 | */ |
109 | track() |
110 | { |
111 | if (!(rng=scan(deg,10))) |
112 | while (!(rng=scan(deg+=20,10))); |
113 | if (!scan(deg+=5,5)) deg-=10; |
114 | if (!scan(deg+=3,3)) deg-=6; |
115 | if (r=scan(deg,10)) { |
116 | cannon(deg,r+r-rng); |
117 | deg-=40; |
118 | }; |
119 |
120 | } |
121 |
|