Conway and SpinOut classes
so they work with the provided main. Provide a makefile
that produces an executable called Game.
The behavior of the Game program should be the same
as the SpinOut and Conway programs,
accounting for the additional command-line argument to determine
which game to play and for the repositioned -i
argument, and except as noted below.
int from the stream for SpinOut
and the next four ints from the stream, separated
by whitespace, for Conway's Soldiers.
std::endl is output
after the board then there will be a blank line in the output.
Your solution should follow good object-oriented design. (So use inheritance and declare members in the base class where it makes sense to do so. Don't create one class that implements both games.)
The constructors for Conway should still work,
as should the assignment operators
when the object assigned to is of static type Conway.
(CS527) Make sure your makefile compiles main with
the -DCS527 option to select the code that creates
the Game objects using a factory. The factory
may throw exceptions when used to create a game initialized
from a source the game does not support (from a file for
SpinOut and from a string for Conway's Soldiers).
(CS527) The version
of Game compiled without the
-DCS527 option should work as
well.
We also reserve the right to deduct points from submissions for violations of the following guidelines.
#included regardless of what other files have
been #included -- if a declaration is required by
your header files, then #include the appropriate
header file in your header file (or write a forward declaration in
your header) rather than relying on your #includers
to have already #included those header files before
they #include yours.
cin
and cout with the I/O operators <<
and >> rather than printf
and scanf).
const
should be declared as const.
-Wall and -pedantic options.
Submit everything you need in order to build Game,
including the unchanged game_main.cpp.
Game program in various ways.
[jrg94@tick Game]$ ./Game spinout -i /////// 6 //////- 5 illegal move 4 ////-/- [jrg94@tick Game]$ ./Game spinout -s ------/ -i ------/ 6 ------- 1 moves [jrg94@tick Game]$ ./Game spinout -s ------/ 6 SOLVED [jrg94@tick Game]$ ./Game spinout 6 4 5 illegal move 5 in position 3 for ////-/- [jrg94@tick Game]$ ./Game spinout 6 4 6 5 6 ////--- [jrg94@tick Game]$ ./Game conway -i ...... ...... .XXX.. ...X.. ...... 3 3 1 3 ...... ...X.. .XX... ...... ...... 1 3 0 3 illegal move 2 1 2 3 ...... ...X.. ...X.. ...... ...... [jrg94@tick Game]$ ./Game conway -f conway_2.in -i ... .X. .X. 2 1 0 1 .X. ... ... 1 moves [jrg94@tick Game]$ ./Game conway 3 3 1 3 2 1 2 3 2 3 0 3 SOLVED [jrg94@tick Game]$ ./Game conway 3 3 1 3 1 3 0 3 2 1 2 3 2 3 2 1 illegal move 1 3 0 3 in position 2 for ...... ...X.. .XX... ...... ...... [jrg94@tick Game]$ ./Game conway -f conway_21.in 5 4 3 4 5 2 5 4 ......... ......... ......... ....X.... ..XX.XX.. ....XXX.. ..XXXXX.. ..XXXXX.. ....X....
Where conway_2.in contains
3 3 ... .X. .X.and
conway_21.in contains
9 9 ......... ......... ......... ......... ..XXXXX.. ..XXXXX.. ..XXXXX.. ..XXXXX.. ....X....