home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / USCX / CROBJ2.ZIP / RND120.R < prev    next >
Text File  |  1987-09-02  |  2KB  |  119 lines

  1. /***************************************
  2.     ROUND Robot   Ver.1.20 (RND120.R)
  3.     Copyright (C) 1987 AkihikoSugawara
  4.                        pcs26423
  5.                        Aug 29 1987
  6. ***************************************/
  7.  
  8. int dist, deg, rot;     /* current   */
  9. int pdeg, pdist;        /* previoua  */
  10. int unit;               /* rot unit  */
  11. int time;               /* rot time  */
  12. int x,y;                /* location  */ 
  13.  
  14. main()
  15. {
  16. deg = 0;
  17. pdeg = 0;
  18. pdist = 0;
  19.  
  20. rot = 0;
  21. time = 0;
  22. unit = 90;
  23.  
  24. center();
  25. while(1){
  26.         x = loc_x();
  27.         y = loc_y();
  28.         if( ( x > 900 ) | ( x < 100 ) | ( y > 900 ) | ( y < 100 ) )
  29.                 center();
  30.         else    {
  31.                 shoot();
  32.                 move();
  33.                 }
  34.         }
  35. }
  36.  
  37. move()          /* move robot */
  38. {
  39. int near;
  40.  
  41. near = scan( deg, 10 );
  42. if( ( near > 0 ) & ( near < 100 ) )
  43.         {
  44.         while( speed() > 50 )
  45.                 drive( 0, 0 );
  46.         rot = deg + 135;
  47.         time = 0;
  48.         }
  49. else if( time == 2 )
  50.         {
  51.         while( speed() > 50 )
  52.                 drive( 0, 0 );
  53.         time = 0;
  54.         }
  55. else    time += 1;
  56.  
  57. if( speed() <= 50 )
  58.         {
  59.         drive( rot, 100 );
  60.         rot += unit;
  61.         }
  62.  
  63. }
  64.  
  65. shoot()         /* shoot cannon */
  66. {
  67. int count;
  68.  
  69. count = 0;
  70. while( ( dist = scan( deg, 5 ) ) == 0 )
  71.         {
  72.         deg += 10;
  73.         count += 1;
  74.         }
  75. if( count > 5 )
  76.         cannon( deg, dist );
  77. else    cannon( deg + ( deg - pdeg ) / 2, dist + ( dist - pdist ) / 2 );
  78. pdeg = deg;
  79. pdist = dist;
  80. deg  -= 25;
  81. }
  82.  
  83. center()        /* move robot to center of the field */
  84.  
  85. {
  86. while( speed() > 0 )
  87.         drive( 0, 0 );
  88. while( loc_x() < 480 )
  89.         {
  90.         drive( 0, 100 );
  91.         shoot();
  92.         }
  93. while( speed() > 5 )
  94.         drive( 0, 0 );
  95. while(loc_y() < 480 )
  96.         {
  97.         drive( 90, 100 );
  98.         shoot();
  99.         }
  100. while(speed() > 5 )
  101.         drive( 0, 0 );
  102. while(loc_x() > 520 )
  103.         {
  104.         drive( 180, 100 );
  105.         shoot();
  106.  
  107.         }
  108. while(speed() > 5 )
  109.         drive( 0, 0 );
  110. while(loc_y() > 520 )
  111.         {
  112.         drive( 270, 100 );
  113.         shoot();
  114.         }
  115. while(speed() > 5 )
  116.         drive( 0, 0 );
  117. }
  118. /* end of program */
  119.