home *** CD-ROM | disk | FTP | other *** search
- S Holmstead
- S Holmstead
- /* Seek 'em and Kill 'em */
-
- int angle, range;
-
- main ()
- {
- /* main loop */
- while (1)
- {
- /* search for someone to kill */
- drive (angle, 0);
- while (!(range = scan (angle -= 10, 10)));
-
- /* shoot at him */
- cannon (angle, range);
-
- /* loop until we loose sight of him */
- while (range = scan (angle = track (angle, 5, 20), 10))
- {
- /* shoot at him */
- cannon (angle, range);
-
- /* if he is too far away, move in closer */
- if (range > 200)
- drive (angle, 50);
- else
- drive (angle, 0);
- }
- }
- }
-
- /* track: pinpoints the enemy (optimized from tiger's routine) */
- track (d, r, l)
- int d, r, l;
- {
- /* check for the end of recursion case */
- if (r <= l)
- {
- /* see if he is still in front of us */
- if (scan (d, r) > 0)
- {
- return (d);
- }
- else
- {
- /* see if he moved left */
- if (scan (d-r, r) > 0)
- {
- return (d-r);
- }
- else
- {
- /* see if he moved right */
- if (scan (d+r, r) > 0)
- {
- return (d+r);
- }
- else
- {
- /* can't find him */
- /* expand our search range and try again */
- return (track (d, r*2, l));
- }
- }
- }
- }
- else
- {
- /* can't find him, give up */
- return (d);
- }
- }
-
-