class RPS
START
Constants
- CHOICES
- COMPUTER_CHOICES
- LOSERS
- NTRY_TO_SYM
- VALID_ENTRIES
- WINNERS
Public Class Methods
new()
click to toggle source
# File lib/rps.rb, line 52 def initialize @player_score = @computer_score = @ties = 0 end
startup()
click to toggle source
# File lib/rps.rb, line 37 def startup() puts "|=====================|" puts "| Rock Paper Scissors |" puts "|---------------------|" puts "| Made by: bag33188 |" puts "|=====================|" print "\r\nYou are about to enter a rock-paper-scissors best of 3 match.\r\n" print "\r\nPress the return/enter key to continue..." gets print "\r\n" end
Public Instance Methods
final_outcome(pl, co)
click to toggle source
# File lib/rps.rb, line 108 def final_outcome(pl, co) return :WIN if pl > co return :LOSE if pl < co # return :TIE if pl == co end
play(winning_score)
click to toggle source
# File lib/rps.rb, line 56 def play(winning_score) while @player_score < winning_score && @computer_score < winning_score puts "\r\nPlayer score: #{@player_score}, " + "Computer score: #{@computer_score}, Ties: #{@ties}.\r\n" player = player_choice computer = COMPUTER_CHOICES.sample # chooses a random option puts "\r\nPlayer chooses #{player.to_s.downcase}." puts "Computer chooses #{computer.to_s.downcase}.\r\n" case player_outcome [player, computer] when :WIN printf "\r\n%s beats %s, player wins the round. \r\n" % [player.to_s.capitalize, computer.to_s.downcase] @player_score += 1 when :LOSE printf "\r\n%s beats %s, computer wins the round.\r\n" % [computer.to_s.capitalize, player.to_s.downcase] @computer_score += 1 else puts "\r\nTie, choose again\r\n" @ties += 1 end end printf "\r\nFinal score:\r\nplayer: %i, computer: %i; (ties: %i).\r\n" % [@player_score, @computer_score, @ties] case final_outcome(@player_score, @computer_score) when :WIN puts "Player wins!\r\n" when :LOSE puts "Computer wins!\r\n" end print "\n[press the enter/return key to exit the game]" gets puts end
player_choice()
click to toggle source
# File lib/rps.rb, line 88 def player_choice loop do print "\r\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 "\r\nThat entry is invalid. Please re-enter.\r\n" else return nil end end end
player_outcome(plays)
click to toggle source
# File lib/rps.rb, line 102 def player_outcome(plays) return :WIN if WINNERS.include?(plays) return :LOSE if LOSERS.include?(plays) return :TIE if !:WIN | !:LOSE end