//////////////////////////////////////////////////////////////////////////////
//
// File: referee.h
//
// Purpose: This is the interface for the Referee class.  The referee is
//          a participant just like the other players.  However, the referee
//          wields more power and responsibility.  Its job is to keep the
//          game moving by prompting the players to take their turns, making
//          sure the players adhere to the rules, and informing the players
//          about how well they are performing.  You can think of the Referee
//          as the friendly liaison between the game rules and the game players.
//
// Authors:
//   txe  Travis Emmitt
//
// Modifications:
//   14-APR-1998  txe  Initial creation
//   15-APR-1998  txe  Added QuitGame() function
//   21-APR-1998  txe  Added Feedback(), NewGame(), NewMatch()
//   22-APR-1998  txe  Added goes_first (for randomly determining starter)
//   23-APR-1998  txe  Added name to constrcutor
//   04-MAY-1998  txe  Added comments, removed unused methods
//
//////////////////////////////////////////////////////////////////////////////

#ifndef REFEREE_H
#define REFEREE_H

#include "player.h"

class Referee : public Player {
private:
  Board *clean_board;                      // used for clearing board
  int    first;                            // id of who goes first this game
  int    quit;			           // if 1, someone wants to quit
  
public:
  Referee (char *name);
  void Feedback    (int winner);           // override, gives players feedback
  int  GetMove     ();                     // override, gets next move
  int  Move        (int x, int y, int color); // called by player
  int  NewGame     ();                     // override, starts new game
  int  NewMatch    ();                     // override, starts new match
  void ResetScores ();                     // override, resets players' scores
  void ShowPlayers (Player **players);     // override, shows other players
  void ShowRules   (Board *board, Board **win_boards);  // override
  int  TakeTurn    ();                     // override, coordinates turn
};

#endif

//////////////////////////////////////////////////////////////////////////////

