// This is the .h file you will edit and turn in. // We have provided a minimal skeleton for you, // but you must finish it as described in the spec. // Also remove these comments here and add your own, as well as on the members. // TODO: remove this comment header and replace it with your own #ifndef _boggle_h #define _boggle_h #include #include #include #include #include "grid.h" #include "lexicon.h" using namespace std; using point = pair; class Boggle { public: bool debug_mode = false; Boggle(); /* * Try to load a string of letters as the board. * * Returns wether it succeeds or not. */ bool board_from_string(const string& letters); void read_dictionary(); /* * Clear state between games. */ void clear(); /* * Shuffle the board, both the dices and their locations. */ void shuffle(); /* * Return whether a word can be constructed on the current board or not. * * Does not check if the word is a valid word or not. * Times itself if debug_mode is enabled. */ bool find_single_word(const string& word) const; /* * Find and return all valid words that can be constructed from the current board. * * Times itself if debug_mode is enabled. */ set find_all_words() const; /* * Convert a board to its string representation. * * Does not contain a trailing newline. */ string board_to_string() const; /* * Return a string represntation of all user words. */ string user_words_to_string(int words_per_line = 8) const; /* * Return a string represntation of all computer words. */ string computer_words_to_string(int words_per_line = 8) const; /* * Return a string representation of a set of words. */ string words_to_string(const set& words, int words_per_line = 8) const; /* * Run calculations for when it's the computer's turn. * * Finds which words the computer found and how many points they're worth. */ void do_computer_turn(); int get_computer_words_size() const; int get_computer_score() const; int get_user_words_size() const; int get_user_score() const; bool word_is_valid(const string& word) const; bool word_is_unplayed(const string& word) const; /* * Add a word the user has found and awards points. * * Does not perform any checks. */ void add_user_word(const string& word); private: const string DICTIONARY_FILE = "EnglishWords.dat"; const int MIN_WORD_LENGTH = 4; static const int BOARD_SIZE = 4; void find_all_words_helper(set& words, const point& cur_point, const string& cur_word, set& visited) const; bool find_single_word_helper(const string& word, const point& cur_point, const string& cur_word, set& visited) const; Lexicon dictionary; Grid board; set user_words; set computer_words; int user_score = 0; int computer_score = 0; }; #endif