CMSC 201
Programming Project Two
Connect 4
Out: Monday 10/9/00
Due: Before Midnight, Sunday 10/22/00
The design document for this project,
design2.txt ,
is due: Before Midnight, Sunday 10/15/00
|
The Objective
The objective of this assignment is to give you practice with project and
function design. It will also give you an opportunity to work with a
two-dimensional array and passing that array to functions for manipulation.
The Background
The game Connect 4 is a popular game sold in both full-size and travel
sizes. The board is vertical and forms a grid that is 6 rows high by
7 columns wide. This game is played by two players, each with their own
color of checkers (either red or black). Checkers are dropped into the
columns by each of the players in turn. The object of the game is to be
the first player to get 4 of your checkers in a row, either horizontally,
vertically, or diagonally.
Play begins by one player choosing a column in which to drop a checker.
Since this is the first play, the checker will fall to the bottom of that
column. The other player then gets to drop one of his checkers into the
column of his choice. If player #2, your opponent, chooses to drop his
checker in a different column than you did, it will fall to the bottom of
that column. If he chooses the same column as you did then his checker will
land just above yours. So the rule of placement is that the checker will
fall down the column as far as it can.
If you would like to practice playing the game so that you understand it,
I have found a version of it on the web that will allow you to play against
the computer.
Practice Playing Connect 4
The Task
Design and code a project that will allow you to play Connect 4 against the
computer.
The Specifications
- The board must be implemented as a two-dimensional array of chars
- You must use the character O to indicate a human player's checker
and the character X to indicate a computer's checker.
- The human player takes his turn first.
- The computer will NOT play intelligently. It must
place its pieces by getting a randomly selected column number. If
that column is already full, then another random column must be
chosen until a checker can be placed.
- Since it is almost impossible to grade a program that makes random,
unforeseeable choices, your program must run in two different modes,
test and play.
- Test mode must be used for grading and can be very helpful to
you for debugging purposes. Test mode simply means that you
will seed the random number generator by asking the user to
enter a positive integer to be used as the seed. Remember that
if you always enter the same seed, the same set of random
numbers will be produced every time you play. This means that if
you always use the same seed, the computer will always place its
pieces in the same places in the same order.
- Play mode can then be used to actually play the game. For play
mode you will seed the random number generator by using a call
to the time() function. This will mean that you'll have no idea
where the computer will place its next piece, just like a real
game.
- Hint: This is not a big deal. It only involves how you seed the
random number generator. This is only done once before play
actually begins.
- After determining the mode, you must display an empty board and
prompt the human player for his choice of column. You will then
place his piece and display the board again. The computer will
then automatically take its turn, reporting the column it chose,
place its piece, redisplay the board and ask for the human's choice.
This process will continue until there is a winner. (See sample
output below)
- After each turn, whether human or computer, your program must check
the board to see if there is a winner. To win one player must have
4 of his pieces in a row, either vertically, horizontally, or
diagonally. There are two ways to win diagonally. Diagonals can go
from lower left to upper right or from upper left to lower right.
If there is a winner, the game is over and the winner should be
announced.
- If the board is filled and there is no winner, then the program
should produce a message that there was a tie and the program should
end.
Sample Run
This is the new sample run ,
that was generated by running the program on irix2. In test mode, your
projects should match the output produced by my program in the test mode
examples.
The old output that was shown here WILL NOT match yours since it
was generated on sunserver1.
Although your output need not be identical to that in the new output file,
all information (including a greeting and instructions that are not shown
in the output) must be present.
Please be aware that this may NOT be a complete test of the program.
Submitting the Program
You are to use seperate compilation for this project, so you will be
submitting a minimum of three files.
Your C source code file that
contains main() MUST be called proj2.c. I would expect
that you would also have files called connect4.c and connect4.h, but you
may choose to have additional .c and .h files.
ToTo submit your project, type the following at the Unix prompt.
Note that the project name starts with uppercase 'P'.
submit cs201 Proj2 proj2.c connect4.c connect4.h (and possibly
other files, seperated by spaces)
To verify that your project was submitted, you can execute the
following command at the Unix prompt. It will show all files that
you submitted in a format similar to the Unix 'ls' command.
submitls cs201 Proj2