//******************************************************************************
//
// CS 240C    : Spring 2003 Ohio University Travis Dillon
// Project 5  : Checkers
// file       : checker.h
// started    : 05-13-03
// summary    : This header file is for the checker class.  Child of game class
//
//******************************************************************************

#ifndef CHECKER_H
#define CHECKER_H

#include "game.h"   // Provides the game base class
#include "prog5.h"

namespace main_savitch_14
{
class Checker : public game
{
 public:
	static const int ROWS = 8;  //size of board
	static const int COLUMNS = 8;  //size of board
	Checker( );
 protected:
	virtual void display_status( ) const;  //ouputs the checker board to screen
	virtual bool is_game_over( ) const;  // Return true if game is finished:
	virtual bool is_legal(const std::string& move)const;  //return true is move
	                                                     //if move is legal
	virtual void make_move(const std::string& move);  //if move is legal, then
                                                    //move is made
	virtual void restart( );  //initializes the checker board to initial state
	virtual bool is_jump() const;  //return true if there is a possible jump
	virtual bool good_move(const std::string& move)const;  //return true if move
	                                                      //uses jumps if avail.
	virtual bool good_jump(const std::string& move)const;  //return true if jump
                                                         //is legally made
	virtual bool zero_piece()const;  //check if either player has zero pieces
	virtual bool is_king(const std::string& move)const;  //return true if a
                                                       //piece is a king
	virtual void move_king(const std::string& move);  //change position of king
	virtual void set_king(const std::string& move);  //make regular piece a king
	virtual void remove_king(int row, int col);  //get rid of king
	virtual bool is_king(int row, int col)const;  //return true if a piece is a
	                                             //king
 private:
	who data[ROWS][COLUMNS];  //2-d array of who
	vector <int> kings;  //holds the row and column of all the positions of kings
};
}  //end main_savitch_14

#endif  //CHECKER.H