Question
Write a detailed algorithm and a program that plays the ancient Chinese game of NIM. Actually, this is a simplified version of the original game.
Write a detailed algorithm and a program that plays the ancient Chinese game of NIM. Actually, this is a simplified version of the original game. In this game, the person who runs your program will be one of the two human players, your program will be a simple Artificial Intelligence (AI) that will serve as the other player, as well as provide the narrative for the game and keep score, invite a friend to be the third player. Your program must keep score impartially while participating in the game, but this is not a difficult task for the computer.
Rules of the Game:
- Number of participating Players: 2 students and 1 computer
- The player who goes first shall define the number of stones in the pile. The number must be between 30 to 50.
- Each player then removes some number (between 1 to 3) of stones from the pile in turn until one player removes the final stone.
- The player who goes first:
I. Provides the number of stones to be placed in the pile,
ii. Removes the first set of 1 to 3 stones
- The other player removes a set of 1 to 3 stones
- The players then take turns(iteration) until the final stone is removed.
- The player who removes the final stone is the winner (student player 1/ student player 2 / the computer).
The program must perform the following:
- Introduce and describe the game, the computer shall introduce itself as the AI player, and prompt the human players for his or her names along with MIT Ids.
- Program is to be interactive to receive and display the response.
- To display a greeting to the human player that incorporates the name provided in response to the prompt: Welcome <users name> to the game of Taking Stones.
- The users name must be output in proper name case (i.e., mixed case starting with upper case for the first letter) regardless of the case the user types in.
- The users shall input the number of stones to be picked either by using a standard random number generator function or may input according to their own strategy but the number should be less than or equal to three (3) and more than zero.
- The program must reject and display a valid message if the number of stones to be removed are either less than one (1) or more than three (3) and remind them the game constrains. In case of invalid entries program to prompt that player to re-enter an appropriate number.
- Your program should have the computer use the optimal playing strategy. The optimal strategy is as follows: Divide the remaining number of stones by three. If the remainder is zero, then two stones are removed, or else one stone is removed. For example, if the remaining number of stones is nine or fifteen, then two stones are removed; if the remaining number of stones is eight or ten, then one stone is removed.
- Both the human players shall have their own strategies to play.
- When one of the players has won a game, the program must output a congratulatory message naming the winner along with ID.
- Your program should allow the users to play additional games of NIM as long as he/she enters a y or yes (lowercase or uppercase) in response to a Do you want to play again? prompt.
In this assignment the students shall code the specified requirements on incremental development processes of designing, coding, testing and debugging. This assignment involves the following tasks:
- To Design and develop an algorithm or a detailed flow chart to play the game as defined by the rules.
- To convert the algorithm to a python program and test for various cases.
- A GUI (optional) may be designed to feed in the password and display the encrypted messages.
Note: Generally, in a project you should write a program that contains an introductory docstring. This documentation should describe what the program will do (analysis) and how it will do it (design the program in the form of a pseudocode algorithm). Include suitable prompts for all inputs, and label all outputs appropriately. After you have coded a program, be sure to test it with a reasonable set of legitimate inputs.
Write a detailed algorithm and a program that plays the ancient Chinese game of NIM. Actually, this is a simplified version of the original game. In this game, the person who runs your program will be one of the two human players, your program will be a simple Artificial Intelligence (AI) that will serve as the other player, as well as provide the narrative for the game and keep score, invite a friend to be the third player. Your program must keep score impartially while participating in the game, but this is not a difficult task for the computer.
Rules of the Game:
- Number of participating Players: 2 students and 1 computer
- The player who goes first shall define the number of stones in the pile. The number must be between 30 to 50.
- Each player then removes some number (between 1 to 3) of stones from the pile in turn until one player removes the final stone.
- The player who goes first:
I. Provides the number of stones to be placed in the pile,
ii. Removes the first set of 1 to 3 stones
- The other player removes a set of 1 to 3 stones
- The players then take turns(iteration) until the final stone is removed.
- The player who removes the final stone is the winner (student player 1/ student player 2 / the computer).
The program must perform the following:
- Introduce and describe the game, the computer shall introduce itself as the AI player, and prompt the human players for his or her names along with MIT Ids.
- Program is to be interactive to receive and display the response.
- To display a greeting to the human player that incorporates the name provided in response to the prompt: Welcome <users name> to the game of Taking Stones.
- The users name must be output in proper name case (i.e., mixed case starting with upper case for the first letter) regardless of the case the user types in.
- The users shall input the number of stones to be picked either by using a standard random number generator function or may input according to their own strategy but the number should be less than or equal to three (3) and more than zero.
- The program must reject and display a valid message if the number of stones to be removed are either less than one (1) or more than three (3) and remind them the game constrains. In case of invalid entries program to prompt that player to re-enter an appropriate number.
- Your program should have the computer use the optimal playing strategy. The optimal strategy is as follows: Divide the remaining number of stones by three. If the remainder is zero, then two stones are removed, or else one stone is removed. For example, if the remaining number of stones is nine or fifteen, then two stones are removed; if the remaining number of stones is eight or ten, then one stone is removed.
- Both the human players shall have their own strategies to play.
- When one of the players has won a game, the program must output a congratulatory message naming the winner along with ID.
- Your program should allow the users to play additional games of NIM as long as he/she enters a y or yes (lowercase or uppercase) in response to a Do you want to play again? prompt.
In this assignment the students shall code the specified requirements on incremental development processes of designing, coding, testing and debugging. This assignment involves the following tasks:
- To Design and develop an algorithm or a detailed flow chart to play the game as defined by the rules.
- To convert the algorithm to a python program and test for various cases.
- A GUI (optional) may be designed to feed in the password and display the encrypted messages.
Note: Generally, in a project you should write a program that contains an introductory docstring. This documentation should describe what the program will do (analysis) and how it will do it (design the program in the form of a pseudocode algorithm). Include suitable prompts for all inputs, and label all outputs appropriately. After you have coded a program, be sure to test it with a reasonable set of legitimate inputs.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started