#!/usr/bin/env ruby =begin |====================================| | Req Ruby Ver | Req Ruby Gems Ver | |--------------|---------------------| | >= v2.0.0 | >= v2.6.0 | |====================================| =end class RPS require_relative "./../lib/rps/version.rb" require_relative "./../lib/Constants.rb" protected_methods :Constants class << self def continue(str1,str2,str3) puts str1 print str2 gets puts str3 end end continue(Constants::INIT_STRINGS[0], Constants::INIT_STRINGS[1], Constants::INIT_STRINGS[2]) def initialize @player_score = @computer_score = @ties = 0 end def play(winning_score) while @player_score < winning_score && @computer_score < winning_score puts"Player score: #{@player_score}, " + "Computer score: #{@computer_score}, Ties: #{@ties}." player = PrivateMethods.player_choice computer = Constants::COMPUTER_CHOICES.sample # chooses a random option puts"\nPlayer chooses #{player.to_s.downcase}." puts"Computer chooses #{computer.to_s.downcase}." case PrivateMethods.player_outcome [player, computer] when :WIN puts"#{player.to_s.capitalize} beats #{computer.to_s.downcase}, player wins the round." @player_score += 1 when :LOSE puts"#{computer.to_s.capitalize} beats #{player.to_s.downcase}, computer wins the round." @computer_score += 1 else puts"Tie, choose again" @ties += 1 end end puts"\nFinal score: player: #{@player_score}, " + "computer: #{@computer_score} (ties: #{@ties})." case PrivateMethods.final_outcome(@player_score, @computer_score) when :WIN puts"Player wins!" when :LOSE puts"Computer wins!" else puts"It's a tie!" end gets end require_relative "./../lib/PrivateMethods.rb" private_methods :PrivateMethods end RPS.new.play(3) # best of 3