class RockPaperScissors
Constants
- CHOICES
Make choices constant (2d list)¶ ↑
this 2d array contains all the options (in string format) the user can use
- COMPUTER_CHOICES
Define possible computer choices¶ ↑
grab the values of the hash
- LOSERS
Map array for losers¶ ↑
this flips the items in the `WINNERS` 2d array
- NTRY_TO_SYM
Define an entry to symbol hash¶ ↑
this is a “hash” that contains the keys and values for winning and losing
- VALID_ENTRIES
Define what our valid entries out¶ ↑
grab the keys of the hash
- WINNERS
Define winners 2d array¶ ↑
defines winners in 2d array/list format
Public Class Methods
Public Instance Methods
play(winning_score)
click to toggle source
Define play game method¶ ↑
this method will be public it will also constain most of the “play” functioonality for this game
# File lib/RockPaperScissors.rb, line 61 def play(winning_score) while @player_score < winning_score && @computer_score < winning_score puts "\nPlayer score: #{@player_score}, " + "Computer score: #{@computer_score}, Ties: #{@ties}.\n" player = player_choice computer = COMPUTER_CHOICES.sample # chooses a random option puts "\nPlayer chooses #{player.to_s.downcase}." puts "Computer chooses #{computer.to_s.downcase}.\n" case player_outcome [player, computer] when :WIN printf "\n%s beats %s, player wins the round. \n\n" % [player.to_s.capitalize, computer.to_s.downcase] @player_score += 1 when :LOSE printf "\n%s beats %s, computer wins the round.\n\n" % [computer.to_s.capitalize, player.to_s.downcase] @computer_score += 1 else puts "\nTie, choose again\n" @ties += 1 end end printf "\nFinal score:\nplayer: %i, computer: %i; (ties: %i).\n\n" % [@player_score, @computer_score, @ties] case final_outcome(@player_score, @computer_score) when :WIN puts "Player wins!\n" when :LOSE puts "Computer wins!\n" end print "\n[press the enter/return key to exit game]" gets puts end
Protected Instance Methods
final_outcome(pl, co)
click to toggle source
player_choice()
click to toggle source
Make player choice method¶ ↑
this method will be protected this will sanity check the user's choice
# File lib/RockPaperScissors.rb, line 97 def player_choice loop do print "\nChoose: Rock (r), Paper (p), or Scissors (s): " choice = gets.chomp.downcase if NTRY_TO_SYM.key?(choice) return NTRY_TO_SYM[choice] elsif choice != VALID_ENTRIES puts "\nThat entry is invalid. Please re-enter.\n" else return nil end end end
player_outcome(plays)
click to toggle source