Question
Rather than using a pass/fail grading system, modify the game to assign grades of A, B, C, D, and F to the player using a
Rather than using a pass/fail grading system, modify the game to assign grades of A, B, C, D, and F to the player using a 10-point grading scale. # Define custom classes --------------------------------------------------- #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 typing test class Test #This method displays the 8-ball greeting message def display_greeting Console_Screen.cls #Clear the display area #Display a welcome screen print "\t\t Welcome to the Ruby Typing Challenge game!" + " Press Enter to " + "continue. : " Console_Screen.pause #Pause the game end #Define a method to be used to present test instructions def display_instructions Console_Screen.cls #Clear the display area puts "\t\t\tInstructions: " #Display a heading #Display the game's instructions puts %Q{ This test consists of a series of 5 typing challenges. The challenge sentences are presented one at a time. To respond correctly, you must retype each sentence exactly as shown and press the Enter key. Your grade will be displayed at the end of the test. Press Enter to continue. } Console_Screen.pause #Pause the game end #Define a method to be used to present typing challenges def present_test(challenge) Console_Screen.cls #Clear the display area print challenge + " : " #Display the challenge sentence result = STDIN.gets #Collect the player's input result.chop! #Remove the end of line marker #Analyze the player input and see if it is correct if challenge == result then #Keep track of the number of correctly retyped challenge sentences $noRight += 1 Console_Screen.cls #Clear the display area #Keep the player informed print "Correct! Press Enter to continue." Console_Screen.pause #Pause the game else Console_Screen.cls #Clear the display area #Keep the player informed print "Incorrect! Press Enter to continue." Console_Screen.pause #Clear the game end end #Define a method to be used to display test results def determine_grade Console_Screen.cls #Clear the display area #To pass the test the player must correctly retype 3 sentences if $noRight >= 3 then #Inform the player of the good news print "You retyped " + $noRight.to_s + " sentence(s) correctly. " puts "You have passed the typing test! Press Enter to continue." else #The player has failed the test #Inform the player of the bad news print "You retyped " + $noRight.to_s + " sentence(s) correctly. " puts "You have failed the typing test! Press Enter to continue." end end end # Main Script Logic ------------------------------------------------------- #Initialize global variable that will be used to keep track of the number #of correctly retyped sentences $noRight = 0 Console_Screen = Screen.new #Instantiate a new Screen object Typing_Test = Test.new #Instantiate a new Test object #Execute the Test object's display_greeting method Typing_Test.display_greeting #Execute the Screen object's cls method in order to clear the screen Console_Screen.cls #Prompt the player for permission to begin the test print "Would you like to test your typing skills? (y/n) : " answer = STDIN.gets #Collect the player's response answer.chop! #Remove any extra characters appended to the string #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 test print "Would you like to test your typing skills? (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 wants to take the test #Execute the Test object's display_instructions method Typing_Test.display_instructions #Display typing challenges and grade each answer by calling on the #Test object's present_test method Typing_Test.present_test "In the end there can be only one." Typing_Test.present_test "Once a great plague swept across the land." Typing_Test.present_test "Welcome to Ruby Principles of Ruby Programming" Typing_Test.present_test "There are very few problems in the world " + "that enough M&Ms cannot fix." Typing_Test.present_test "Perhaps today is a good day to die. Fight " + "beside me and let us die together." #Notify the player of the results by executing the Test object's #display_instructions method Typing_Test.determine_grade Console_Screen.pause #Pause the game Console_Screen.cls #Clear the display area #Thank the player for taking the typing test puts "Thank you for taking the Ruby Typing Challenge. " end
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