**Basic instructions:** Design, code, test and document a C++ program that allows two players to play a game of 4x4x4 noughts-and-crosses. Your program should be able to load & save game states and include a human-versus-computer ability. It must make use of the Win and Pen classes attached, and display a board such as the one attached in the jpg file.
Description Of the game
First, player **O** puts an O on one of the squares on the
board. Then player **X** puts an X on one of the empty squares on the board. Then player **O** puts an O on one of the empty squares on the board. **…** Until one of the players
wins by lining up four of their counters. Any straight line of four identical counters wins.
Your design should extend (using inheritance) the classes attached. The example program demonstrates how to extend win. The mouse should be the main source of input, and the X11 window the main (ideally the only) source of output. Add a rhombus function to your new pen class ??" see the following for help: The UNIX manual pages provided by “man XFillPolygon?? and “man XPoint??, and the function “pen::rectangle??. Your OO design should include at least a player class as well. The use of C techniques that have C++ equivalents should NOT be used. Use the “one .h and one .cc?? rule for each of your classes, and keep your main function as short as possible. In addition to the basic game, you must implement the loading and saving of mid-game states and implement a human-versus-computer ability. The program must compile and execute under RedHat with X11. A **write up** is also required and in it, detail the stages to show the development of your OO design and the derivation of your program from that design. Show the thinking behind each step*.* Also include a brief user guide.
***_Make sure that the program satisfies all of the questions below._
All code ??" OO aspects
* Are the classes well separated ??" that is would changing the functionality of one class involve changing source code in another? Is there a player class? A child window class? A child pen class? Do objects store their own data? Are private and protected used where possible? Do destructors free any/all memory allocated using new? Is there unnecessary repetition in the source code? Are there any unwarranted global variables or functions? Is main() short and simple? (It should be.)**
Game code (not computer-player)
*** Does the program contain all the correct code for the game? Does the loading & saving of mid-games work reliably? Does the program compile without warnings/errors? Is the program easy to read, with good variable names & comments?
***Graphical User Interface (X11) code
*** Does the pen class have a rhombus function with a fill option? Is the mouse the main source of input & is input intuitive? Is the X11 window the main source of output? How good does the display look (eg. colour)?
*** Can the computer provide an enjoyable game for a novice?For an experienced player?
Write-up (Concentrate on the OO!)
*** Documentation, including explanations of your thought processes for each of the requirements analysis, system specification, identification of classes, identification of behaviours, classification of relationships, identification of state variables, design of class declarations, iteration of design (including possible role-play), implementation and testing. User guide, adequate sample output, a good quality of presentation.
Red Hat Linux with X11