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