CSE 131 Module 2: Choice & Iteration
Game of Nim
Nim is a game of strategy in which two players take turns removing sticks from a common pile. There are many variations of Nim
but for the purposes of this assignment, we will stick with a simple and common implementation. On each turn, a player must remove either 1 or 2 sticks
from the pile. The goal of the game is to be the player who removes the last stick.
In this assignment, you will design a game in which one human player is competing against a computer. The human player should also be able to decide
if he or she wants to play the first or second move.
It's important to note that while there is a winning strategy for this game, you are required only to implement a computer player which employs
Example output of one game:
Round 0, 7 sticks at start, computer took 2, so 5 sticks remain
Round 1, 5 sticks at start, human took 1, so 4 sticks remain
Round 2, 4 sticks at start, computer took 2, so 2 sticks remain
Round 3, 2 sticks at start, human took 1, so 1 sticks remain
Round 4, 1 sticks at start, computer took 1, so 0 sticks remain
- Clearly, the human could have played better in the above game.
- The computer randomly removes 1 or 2 sticks, but cannot remove more
sticks than are left.
- The human is prompted at each turn for how many sticks he or she
wants to remove.
Be careful! A human might enter 5 if 5 sticks are left, and if you
are not careful,
the human could win
by playing in that way.
Don't accept the user's input if it is illegal. Continue prompting until
you get a valid input.
- Start your work by creating a Nim class in the lab2 package of the labs source folder in your repository.
- Use ArgsProcessor to prompt for inputs.
- Your program must continue play until somebody (computer or human) wins.
- Your output should resemble the sample output shown above.
- When you demo this assignment, be prepared to discuss how you would implement a dominant strategy with your TA
Submitting your work (read carefully)
- You must commit and push all of your work to your repository. It's best to do this
from the top-most level of your repository, which bears your name and student ID.
- You must demo the commited work to a TA. Make sure the TA knows that
your demo is for credit at this point.
- Follow the directions below to have your demo for this work recorded.
Last modified 12:48:21 CDT 30 August 2017
When you done with this lab, you must be cleared by the TA to receive credit.
- Commit and push all your work to your repository
- Fill in the form below with the relevant information
- Have a TA check your work
- The TA should check your work and then fill in his or her name
- Click OK while the TA watches
- If you request propagation, it does not happen immediately,
but should be posted in the next day or so
This demo box is for lab 2