// ========================================================================== // Choose a word, use it to create a playing board. // A. Fischer, June 4, 2000 file: board.hpp // Modified by M. Fischer, October 8, 2009 //=========================================================================== #pragma once #include "words.hpp" #define HANG_MAX 7 // ========================================================================== class Board { public: enum status {GOOD_GUESS, BAD_GUESS, NOT_IN_ALPHA, USED_ALREADY}; private: int errcnt; // Wrong guesses so far, int found; // Number of Letters correctly filled in. const Alphabet alpha; // Masked alphabet. const Alphabet errors; // Masked alphabet for error list. const HangWord puzzle; // Masked mystery word. protected: Board(const char* a, const char* puz); // Alphabet and puzzle word. ~Board(){} status guess(char c); // process a guess bool gameWon() const { return found >= puzzle.length(); } bool gameLost() const { return errcnt >= HANG_MAX; } bool gameOver() const { return gameWon() || gameLost(); } const char* puzzleWord() const { return puzzle.word(); } ostream& print(ostream&) const; // print a board }; //=========================================================================== class Player: Board { public: Player(const char* a, const char* puz) : Board(a, puz) {} int play(); // play a board void move(); // user interaction for one move };