Matthews Stats
Time Taken: 2 hours Files: 16
Lines of Code: 772
What to Submit
ConnectN
A zip file containing
Your .cpp and .h files that make up your solution
A CMakeLists.txt file that will generate an executable named ConnectN from
your .cpp and .h files
In your CMakeLists.txt in the add_executable line, make sure you have
add_executable(ConnectN your_.cpp_files your_.h
_files) so the correctly named executable gets built
Make sure to zip the files you want to submit and NOT the folder that contains the files.
Submitting the folder with the files will cause your program to fail to build. Restrictions and Requirements
You MUST enclose all of your solution, except for main, in a namespace name ConnectNGame
No global variables may be used
Your submission must contain at least 2 or more .cpp files and one or more .h files
Your submission must have at least 3 user defined functions in it in addition to main
You must have at least 2 user defined classes: Board and Player though having more is
likely to be very helpful
Description
You are to implement the game of ConnectN. ConnectN is like Connect4 but the user gets to specify the dimensions of the board as well as how many pieces in a row are needed to win. In the game, players take turns dropping a piece into one of the available columns, trying to match N or more of their pieces in a row. If youve never played Connect4 before I recommend that you do so in preparation for this problem. You can play the game here or search online for another version that you like more.
Input
Command Line
All Command line input will be valid
1. An integer specifying the number of rows on the board
2. An integer specifying the number of columns on the board
3. An integer specifying the number of pieces in a row to win
a. It is legal for this value to be an amount that would be impossible to get on a board of this size. For example, it is legal to need 10 pieces in a row on a 3 X 4 board.
Standard Input
Will not always be valid. If invalid input is entered then the user should be continually prompted for input until they enter valid input
User Name
The user name must be exactly one word long and not the same as the other players name
Player Piece
A single character representing the marker for this user that is not the same as the other players piece
When checking to see if the piece is the same as the other players piece case doesnt matter. For example, if player 1 chose X for their piece player 2 would not be allowed to choose x
Column to Play In
An integer specifying one of the columns on the board to play in. The column to play in cannot be full
Game Play Loop
Player Turn
The player selects a column to drop their piece into and drops their piece into it
Ending the Game
The game ends if either player wins or there is a tie
A player wins by matching N or more of their pieces in a row either vertically,
horizontally, or diagonally anywhere on the board
A tie occurs if the entire board is filled up without either player winning
Hints
Start early. You will need every minute of the time you have been given to finish by the deadline
Play with the sample executable that Ive given you on Kodethon to see how the game works and to get an idea of what you need to do before starting
The Tic Tac Toe game we did in class is a great starting point
Break things down into classes and functions. Have each class dedicated to a certain
idea and have each function do exactly one thing and one thing only.
Use the top-down programming approach that has been shown in class
Example
In the example below, user input has been underlined to help you distinguish between input and output. You do not have to underline anything.
./ConnectN 6 7 4
Player 1, please enter your name: MegaMan
MegaMan, please enter the character you want to use for your piece: M Player 2, please enter your name: Protoman
Protoman, please enter the character you want to use for your piece: P
0123456 5*******
4******* 3******* 2******* 1******* 0******* MegaMan, please
enter a column to play in: 1
0123456
5*******
4*******
3*******
2*******
1*******
0*M*****
Protoman, please enter a column to play in: 2
0123456 5******* 4******* 3******* 2******* 1******* 0*MP**** MegaMan, please
enter a column to play in: 2
0123456
5*******
4*******
3*******
2*******
1**M****
0*MP****
Protoman, please enter a column to play in: 3
0123456 5******* 4******* 3******* 2******* 1**M**** 0*MPP*** MegaMan, please
0123456 5******* 4******* 3******* 2*******
enter a column to play in: 4
1**M****
0*MPPM**
Protoman, please enter a column to play in: 3
0123456 5******* 4******* 3******* 2******* 1**MP*** 0*MPPM** MegaMan, please
enter a column to play in: 3
0123456
5*******
4*******
3*******
2***M***
1**MP***
0*MPPM**
Protoman, please enter a column to play in: 4
0123456 5******* 4******* 3******* 2***M*** 1**MPP** 0*MPPM** MegaMan, please
enter a column to play in: 5
0123456
5*******
4*******
3*******
2***M***
1**MPP**
0*MPPMM*
Protoman, please enter a column to play in: 4
0123456 5******* 4******* 3******* 2***MP** 1**MPP** 0*MPPMM* MegaMan, please
enter a column to play in: 4
0123456 5******* 4******* 3****M** 2***MP** 1**MPP** 0*MPPMM* MegaMan won the
game!
Reviews
There are no reviews yet.