home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / GAMES / CHESSCLK.ZIP / CHESSCLK.HPP < prev    next >
C/C++ Source or Header  |  1993-11-15  |  3KB  |  163 lines

  1.  
  2. /***************************************************************************/
  3.  
  4. extern "C" two_tone(),
  5.        blatt();
  6.  
  7. #define PLAY 1
  8. #define GAME_OVER 1
  9. #define QUIT 2    
  10. #define ESC 27
  11. #define MAXLEN 4
  12. #define BUFSIZE 12
  13. #define BLK_TIME 460
  14. #define NAME_POS 530
  15. #define Y_TIMEPOS 300
  16. #define POS_OFFSET 158
  17. #define POS1_OFFSET 130
  18. #define COLORS 15
  19. #define PATTERNS 11
  20. #define RADIUS 50
  21. #define X_C 315
  22. #define Y_C 225
  23. #define MOVES_X 316
  24. #define MOVES_Y 440
  25.  
  26. typedef enum { FALSE, TRUE } BOOLEAN;
  27. enum FLAG { OFF, ON };
  28. enum Player { WHITE_, BLACK_ };
  29.  
  30. char *player[] = { "White", "Black" };
  31.  
  32. void graphics_setup( int ),
  33.      exit__();
  34.  
  35.  
  36.  
  37. class CountdownTimer
  38.    {
  39.    protected:
  40.       int hours,
  41.       minutes,
  42.       moves,
  43.       warning,
  44.       text_color;
  45.       char line_clear [ BUFSIZE ];
  46.       Player p;
  47.       FLAG running_flag,
  48.        visual_ticking_flag,
  49.        time_warning_flag;
  50.       time_t seconds,
  51.          total_seconds,
  52.          start_t,
  53.          end_t,
  54.          startn_t,
  55.          interval_t,
  56.          running_t;
  57.    public:
  58.       CountdownTimer()
  59.       {
  60.        hours = 2; minutes = moves = 0; seconds = 0L;
  61.        total_seconds = hours * 3600 + minutes * 60;
  62.        p = WHITE_;
  63.       }
  64.       CountdownTimer( int hrs, int min, time_t sec, Player pl )
  65.       {
  66.       hours = hrs; minutes = min; seconds = sec; moves = 0;
  67.       total_seconds = hours * 3600 + minutes * 60 + seconds;
  68.       p = pl;
  69.       }
  70.       CountdownTimer( int min, time_t sec, Player pl )
  71.       { 
  72.       sec += min * 60;
  73.       total_seconds = sec; 
  74.       hours = sec / 3600;
  75.       minutes = ( sec % 3600 ) / 60;
  76.       seconds = sec % 60;
  77.       moves = 0;
  78.       p = pl;
  79.       }
  80.       CountdownTimer( int hrs, int min, Player pl )
  81.      {
  82.      hours = hrs; minutes = min; seconds = 0L; moves = 0;
  83.      total_seconds = hours * 3600 + minutes * 60;
  84.      p = pl;
  85.      }
  86.       CountdownTimer( time_t sec, Player pl )
  87.       {
  88.       total_seconds = sec;
  89.       convert( sec );
  90.       p = pl;
  91.       moves = 0;
  92.       }
  93.       void convert( time_t sec )
  94.       { 
  95.       hours = sec / 3600;
  96.       sec %= 3600;
  97.       minutes = sec / 60;
  98.       seconds = sec % 60;
  99.       }
  100.  
  101.       void display_time()
  102.       {
  103.       char dbuff [ BUFSIZE ];
  104.  
  105.          sprintf( dbuff,  "%02d:%02d:%02ld", hours, minutes, seconds );
  106.  
  107.          erase_numbers();  // Wipe off old time.
  108.          
  109.          setcolor( text_color );
  110.          outtextxy( p * BLK_TIME, Y_TIMEPOS, dbuff );
  111.          sprintf( line_clear, dbuff );
  112.       }
  113.  
  114.       BOOLEAN timeout()
  115.      {
  116.      if( !hours )
  117.         if( !minutes )
  118.            if( !seconds )
  119.           {
  120.           two_tone();
  121.           return ( TRUE );
  122.           }
  123.      return ( FALSE );
  124.      }
  125.  
  126.       void exit_()
  127.       { 
  128.      char buff [20];
  129.  
  130.  
  131.       if( p )
  132.      sprintf( buff, "Black out of time." );
  133.       else
  134.      sprintf( buff, "White out of time." );
  135.  
  136.       setcolor( RED );
  137.       settextstyle( TRIPLEX_FONT, HORIZ_DIR, 1 );
  138.       outtextxy( 460, 440, buff );
  139.  
  140.       sprintf( buff, "PRESS A KEY" );
  141.       outtextxy( 460, 460, buff );
  142.  
  143.       getch();
  144.       closegraph();
  145.       exit ( GAME_OVER );
  146.       }
  147.  
  148.       void initialize_clock()
  149.       {
  150.       running_flag = OFF;  //Clock is running.
  151.       running_t = 0;
  152.       start_t = time( NULL );
  153.       }
  154.  
  155.       void clock_on(),
  156.        erase_numbers(),
  157.        display_moves();
  158.  
  159.       friend void play();
  160.     
  161.     }; //end class defn.
  162.  
  163.