In this homework, you will write your game of Hex program in C++ using object oriented techniques. Your main class for this homework will be named Hex. This class will have a private inner class named Cell to represent a Hex cell. The class Cell will hold the position of the cell (A, B, C, etc)
and the row number (1, 2, 3, etc). This class will also include all necessary setters/getters, constructors etc. Remember a cell can be empty, user (user1, user2) or computer, which will be represented by C++11 Enum types.
Next, write a class named Hex to represent and play the game. The class Hex will hold a vector of vector of Cell objects to represent the cells. In other words, this class will have vector< vector<Cell> > hexCells; in its private section.
The class Hex will also have the following features and functions
- There is no limit for the board but it should be larger than 55 and it should be square. Your game will resize according to the parameter for the constructor.
- There should be at least 3 constructors.
- The class will have functions to read and write from files. You will decide on the file format like you did in HW2.
- The class will have functions to return the current width and height of the board
- The class will have a function that displays the current board on the screen
- The class will have two functions named play that plays the game for a single step. First function does not take a parameter and it plays the computer. The second function takes a cell position and it plays the user.
- The class should have a function that returns if the game ended.
- The class should have a function named playGame. This function plays the game by asking the user the board size first then asks the user to play and the computer plays, etc.
- The class will have a static function that returns the number of marked (non-empty) cells in all the games. Be careful here because there could be more than one game active at the same time.
- The class will have a function that takes another object Hex as parameter and compares the Hex games. It returns true is the first game has more marked cells for the user, otherwise it returns false.
- Any other functions (public or private) needed.
Write your main function to test both classes. Make at least 5 objects of class Hex and play the games at the same time.
You will use all the object oriented techniques that we learned in the class including const, static, inline keywords.
Notes:
- Do not use any functions from the standard C library (like printf)
- Read the chapter about file input output for reading and writing text files using streams.
- Do not use anything that we did not learn in the lectures.
- Do not forget to indent your code and provide comments.
- Check the validity of the user input.
- Test your programs very carefully at least with 10 different runs. Submit at least two saved files with the HW.
- You should submit your work to the moodle page.
Reviews
There are no reviews yet.