Question: 1. Modify the ruby virtual crazy 8-ball game so that, in addition to welcoming the player at the beginning of the game, it displays instructions
1. Modify the ruby virtual crazy 8-ball game so that, in addition to welcoming the player at the beginning of the game, it displays instructions for how to play. Implement this challenge by modifying the text that is displayed by the Ball class's say_gretting methood
2. The ruby virtual crazy 8-ball game resopnds to player questions by randomly selecting and displaying one of six answers. Make the game more unpredictable by expanding the list of possible answers from six to 10. Implement this challenge by expanding the number of when statements from 6 to 10 in the ball class's get_fortune method. Make sure you also modify the get_fortune method so that it generates its random number within a range of one to 10.
3. The ruby virtual crazy 8-ball game allows the player to submit blank questions by simply pressing the Enter key. Disable this behavior, forcing the player to type something before pressing Enter.
4. Modify the game so that it displays your name and your school's URL in addition to a message thanking the player for playing the game. To implement this challenge, modify the Ball class's say_goodbye method by adding the specified text.
5. Modify the game so that the player sees the same closing information regardless of when the game ends. To do so, the Ball class's say_goodbye method will have to be called if the player decides not to play the game.
#Define a class representing the console window class Screen
def cls #Define a method that clears the display area puts (" " * 25) #Scroll the screen 25 times puts "\a" #Make a little noise to get the player's attention end def pause #Define a method that pauses the display area STDIN.gets #Execute the STDIN class's gets method to pause script #execution until the player presses the Enter key end end
#Define a class representing the 8-Ball class Ball
#Define class properties for the 8-Ball attr_accessor :randomNo, :greeting, :question, :goodbye #Define a method to be used to generate random answers def get_fortune randomNo = 1 + rand(6) #Assign an answer based on the randomly generated number case randomNo when 1 $prediction = "yes" when 2 $prediction = "no" when 3 $prediction = "maybe" when 4 $prediction = "hard to tell. Try again" when 5 $prediction = "unlikely" when 6 $prediction = "unknown" end end
#This method displays the 8-Ball greeting message def say_greeting greeting = "\t\t Welcome to the Virtual Crazy 8-Ball game!" + " Press Enter to " + "continue. : " print greeting end #This method displays the 8-Ball's primary query def get_question question = "Type your question and press the Enter key. : " print question end #This method display the 8-Ball answers def tell_fortune() print "The answer is " + $prediction + ". : " end
#This method displays the 8-Balls closing message def say_goodbye goodbye = "Thanks for playing the Virtual Crazy 8-Ball game! " puts goodbye end
end
# Main Script Logic -------------------------------------------------------
Console_Screen = Screen.new #Initialize a new Screen object Eight_Ball = Ball.new #Initialize a new Ball object
Console_Screen.cls #Clear the display area
Eight_Ball.say_greeting #Call method responsible for greeting the player
Console_Screen.pause #Pause the game
answer = "" #Initialize variable that is used to control the game's first #loop
#Loop until the player enters y or n and do not accept any other input. until answer == "y" || answer == "n"
Console_Screen.cls #Clear the display area
#Prompt the player for permission to begin the game print "Would you like to have your fortune predicted? (y/n) : "
answer = STDIN.gets #Collect the player's response answer.chop! #Remove any extra characters appended to the string
end
#Analyze the player's response if answer == "n" #See if the player elected not to play
Console_Screen.cls #Clear the display area
#Invite the player to return and play again puts "Okay, perhaps another time. "
else #The player has elected to play the game
#Initialize variable that is used to control the game's primary loop gameOver = "No" #Loop until the player decides to quit until gameOver == "Yes" Console_Screen.cls #Clear the display area #Call upon the method responsible for prompting the player to ask a #question Eight_Ball.get_question #Call upon the method responsible for generating an answer Eight_Ball.get_fortune Console_Screen.pause #Pause the game Console_Screen.cls #Clear the display area #Call upon the method responsible for telling the player the 8-Ball's #answer Eight_Ball.tell_fortune
Console_Screen.pause #Pause the game Console_Screen.cls #Clear the display area
#Find out if the player wants to ask another question print "Press Enter to ask another question or type q to quit. : "
answer = STDIN.gets #Collect the player's response answer.chop! #Remove any extra characters appended to the string
#Analyze the player's response if answer == "q" #See if the player elected not to play gameOver = "Yes" #The player wants to quit end
end
Console_Screen.cls #Clear the display area
#call upon the method responsible for saying goodbye to the player Eight_Ball.say_goodbye end
# Main Script Logic -------------------------------------------------------
Console_Screen = Screen.new #Initialize a new Screen object Eight_Ball = Ball.new #Initialize a new Ball object
Console_Screen.cls #Clear the display area
Eight_Ball.say_greeting #Call method responsible for greeting the player
Console_Screen.pause #Pause the game
answer = "" #Initialize variable that is used to control the game's first #loop
#Loop until the player enters y or n and do not accept any other input. until answer == "y" || answer == "n"
Console_Screen.cls #Clear the display area
#Prompt the player for permission to begin the game print "Would you like to have your fortune predicted? (y/n) : "
answer = STDIN.gets #Collect the player's response answer.chop! #Remove any extra characters appended to the string
end
#Analyze the player's response if answer == "n" #See if the player elected not to play
Console_Screen.cls #Clear the display area
#Invite the player to return and play again puts "Okay, perhaps another time. "
else #The player has elected to play the game
#Initialize variable that is used to control the game's primary loop gameOver = "No" #Loop until the player decides to quit until gameOver == "Yes" Console_Screen.cls #Clear the display area #Call upon the method responsible for prompting the player to ask a #question Eight_Ball.get_question #Call upon the method responsible for generating an answer Eight_Ball.get_fortune Console_Screen.pause #Pause the game Console_Screen.cls #Clear the display area #Call upon the method responsible for telling the player the 8-Ball's #answer Eight_Ball.tell_fortune
Console_Screen.pause #Pause the game Console_Screen.cls #Clear the display area
#Find out if the player wants to ask another question print "Press Enter to ask another question or type q to quit. : "
answer = STDIN.gets #Collect the player's response answer.chop! #Remove any extra characters appended to the string
#Analyze the player's response if answer == "q" #See if the player elected not to play gameOver = "Yes" #The player wants to quit end
end
Console_Screen.cls #Clear the display area
#call upon the method responsible for saying goodbye to the player Eight_Ball.say_goodbye end
# Main Script Logic -------------------------------------------------------
Console_Screen = Screen.new #Initialize a new Screen object Eight_Ball = Ball.new #Initialize a new Ball object
Console_Screen.cls #Clear the display area
Eight_Ball.say_greeting #Call method responsible for greeting the player
Console_Screen.pause #Pause the game
answer = "" #Initialize variable that is used to control the game's first #loop
#Loop until the player enters y or n and do not accept any other input. until answer == "y" || answer == "n"
Console_Screen.cls #Clear the display area
#Prompt the player for permission to begin the game print "Would you like to have your fortune predicted? (y/n) : "
answer = STDIN.gets #Collect the player's response answer.chop! #Remove any extra characters appended to the string
end
#Analyze the player's response if answer == "n" #See if the player elected not to play
Console_Screen.cls #Clear the display area
#Invite the player to return and play again puts "Okay, perhaps another time. "
else #The player has elected to play the game
#Initialize variable that is used to control the game's primary loop gameOver = "No" #Loop until the player decides to quit until gameOver == "Yes" Console_Screen.cls #Clear the display area #Call upon the method responsible for prompting the player to ask a #question Eight_Ball.get_question #Call upon the method responsible for generating an answer Eight_Ball.get_fortune Console_Screen.pause #Pause the game Console_Screen.cls #Clear the display area #Call upon the method responsible for telling the player the 8-Ball's #answer Eight_Ball.tell_fortune
Console_Screen.pause #Pause the game Console_Screen.cls #Clear the display area
#Find out if the player wants to ask another question print "Press Enter to ask another question or type q to quit. : "
answer = STDIN.gets #Collect the player's response answer.chop! #Remove any extra characters appended to the string
#Analyze the player's response if answer == "q" #See if the player elected not to play gameOver = "Yes" #The player wants to quit end
end
Console_Screen.cls #Clear the display area
#call upon the method responsible for saying goodbye to the player Eight_Ball.say_goodbye end
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
