Computer science

Assignment 2: Game of Nim

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 random moves.

Example output of one game:

Computer starts
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
Computer wins


  • 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
Assignment 2: 
What are the values and types of the following expressions (put both answers in the same box, 50 points):
8 * 4 + 9 / 2

Your answer
8 * (2 + 5) / 1.0

Your answer