Question

Objective: Write a program which simulates a hot potato game. In this version of a classic...

Objective:

Write a program which simulates a hot potato game. In this version of a classic game, two or more players compete to see who can hold onto a potato the longest without getting caught. First the potato is assigned a random value greater than one second and less than three minutes both inclusive. This time is the total amount of time the potato may be held in each round. Next players are put into a circular list. Then each person gets possession of the potato in order. The player with the potato indicates how long they wish to hold on to it by entering a number from 1-10 seconds. If the player’s time is less than the remaining potato possession time then it moves on to the next player. However, if the time is larger, then the player is removed from the circular list and the potato’s time is reset. This is done until there is one player remaining.

Requirements:

  • The number of players has to be greater than 1 and specified by the user.
  • Players’ then may enter their names.
  • If a player picks a value outside of 1-10 then their pick is defaulted to 10.
  • Once a game is over the user is prompted whether or not to play again.
  • You must create and use your own generic circular linked list. This is very similar to the structure taught in class except the last element links to the first element.
  • You may either choose to do a single or double linked list.
  • Using multiple objects may make this the solution easier and extendable.

Example Dialog:

Welcome to the Hot Potato Game!

Enter the number of players (2 or more required).

3

Enter the player 1's name

Human H. Human

Enter the player 2's name

Person H. Person

Enter the player 3's name

NotLizard H. NotLizard

Human H. Human Enter a number from 1-10 corresponding to the number of seconds to hold the potato

4

Human H. Human is safe for now.

Person H. Person Enter a number from 1-10 corresponding to the number of seconds to hold the potato

6

Person H. Person is safe for now.

NotLizard H. NotLizard Enter a number from 1-10 corresponding to the number of seconds to hold the potato

10

NotLizard H. NotLizard is safe for now.

Human H. Human Enter a number from 1-10 corresponding to the number of seconds to hold the potato

44

The number must be between 0 and 10. We will assume you meant 10

Human H. Human is safe for now.

Person H. Person Enter a number from 1-10 corresponding to the number of seconds to hold the potato

10

HOT POTATO!!! Person H. Person has been eliminated!

NotLizard H. NotLizard Enter a number from 1-10 corresponding to the number of seconds to hold the potato

3

NotLizard H. NotLizard is safe for now.

Human H. Human Enter a number from 1-10 corresponding to the number of seconds to hold the potato

10

Human H. Human is safe for now.

NotLizard H. NotLizard Enter a number from 1-10 corresponding to the number of seconds to hold the potato

5

NotLizard H. NotLizard is safe for now.

Human H. Human Enter a number from 1-10 corresponding to the number of seconds to hold the potato

10

HOT POTATO!!! Human H. Human has been eliminated!

NotLizard H. NotLizard WINS!

Would you like to continue? Press ENTER to continue or enter "quit" to quit

quit

Goodbye

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Please find the answer below. Let me know if you have any doubt.

import java.util.*; //for Scanner and Random classes
class Node //class Node which represents Player
{
protected String name; //to store player name
protected Node link; //links to next player

// non-argument Constructor
public Node()
{
link = null;
name = "";
}   
// Parameterized Constructor  
public Node(String s,Node n)
{
link = n;
name = s;
}   
// Function to set link to next Player
public void setLink(Node n)
{
link = n;
}   
// Function to set Name
public void setName(String s)
{
name = s;
}   
// Function to get link to next Player
public Node getLink()
{
return link;
}   
// Function to get name
public String getName()
{
return name;
}
}

class HotPotato{ //driver class named HotPotato
//deleteNode method takes a node and removes the node from list
public static Node deleteNode(Node del){
Node node = del.getLink(), prev = null;
while(node!=del){ //loops until node mathces with del
prev = node;
node = node.getLink();
}
prev.setLink(node.getLink());
return prev.getLink(); //returns the linked node to prev
}
public static void main(String[] args) { //main method.
Scanner keyboard = new Scanner(System.in); //created object for scanner
System.out.print("Welcome to the Hot Potato Game!");
String chose; //to store the quit the game or play input
do{
System.out.println("Enter the number of players (2 or more required). ");
int n = keyboard.nextInt(); //stores the number of players into n
keyboard.nextLine(); //escapes the nextline character
  
int i=1;

Node start=null, node=null, end=null;
while(i<=n){ //generates the singly circular linked list
System.out.println("Enter the player "+i+"'s name");
String name = keyboard.nextLine();//keyboard.nextLine();
node = new Node(name,start);
if(start==null){
start = node;
node.setLink(start);
end = start;
}   
else{
end.setLink(node);
end = node;
}
i += 1;
}

Random rand = new Random();
int potatoTime = rand.nextInt(121)+60; //generates random number between 60 and 180
node = start;
int seconds = potatoTime; //assings the potatoTime to seconds
  
while(n>1){ //loops until the only one player is remaining in list
System.out.println(node.getName()+" Enter a number from 1-10 corresponding to the number of seconds to hold the potato");
int input = keyboard.nextInt();
if(input>10){
System.out.println("The number must be between 0 and 10. We will assume you meant 10");
input = 10;
}
if(input>=seconds){ //if input is greater than seconds then
n--; //decrements the number of players
seconds = potatoTime; //resets the potatoTime
System.out.println("HOT POTATO!!! "+node.getName()+" has been eliminated! ");
node = deleteNode(node); //deletes the node from list
continue; //and contiunues without execuitng further loop block
}
else{ //else decrements input from seconds
seconds -= input;
System.out.println(node.getName()+" is safe for now. ");
}
node = node.getLink(); //takes next node into node
}
System.out.println(node.getName()+" WINS!");
System.out.println("Would you like to continue? Press ENTER to continue or enter 'quit' to quit");  
chose = keyboard.next(); //takes the users choice
}while(!chose.equals("quit")); //loops until user enters quit
System.out.println("Goodbye"); //prints good bye statement
}
}

Add a comment
Know the answer?
Add Answer to:
Objective: Write a program which simulates a hot potato game. In this version of a classic...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT