//******************************************************************************
//
// 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