class RocaPapelTijeras::Game
Constants
- WEAPONS
Attributes
game_winner[RW]
player1_score[RW]
player2_score[RW]
round_number[RW]
round_winner[RW]
Public Class Methods
new()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 10 def initialize @player1_score = 0 @player2_score = 0 @round_winner = '' @game_winner = '' @round_number = 1 end
Public Instance Methods
play_one_player()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 18 def play_one_player play("La Computadora", Proc.new {computer_makes_choice}) end
play_two_player()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 22 def play_two_player play("Jugador 2", Proc.new { request_player_choice }) end
Private Instance Methods
announce_game_winner(player2_name)
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 94 def announce_game_winner(player2_name) if @game_winner == 'tie' puts "No hay un ganador del juego." elsif @game_winner == 'player1' puts "Jugador 1 ganó el juego!" else puts "#{player2_name} ganó el juego!" end end
announce_round()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 34 def announce_round puts '','-' * 15 puts "Vuelta #{@round_number}!" puts '-' * 15 @round_number += 1 end
announce_round_winner(player2_name)
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 64 def announce_round_winner(player2_name) if @round_winner == 'tie' puts "No hay un ganador de esta vuelta." elsif @round_winner == 'player1' puts "Jugador 1 ganó la vuelta." else puts "#{player2_name} ganó la vuelta." end puts "El resultado actual: Jugador 1: #{@player1_score} | #{player2_name}: #{@player2_score}" end
award_points()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 85 def award_points if @round_winner == 'tie' elsif @round_winner == 'player1' @player1_score += 1 else @player2_score += 1 end end
clear_screen()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 104 def clear_screen Gem.win_platform? ? (system "cls") : (system "clear") end
computer_makes_choice()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 30 def computer_makes_choice WEAPONS.sample end
determine_game_winner()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 75 def determine_game_winner if @player1_score == @player2_score @game_winner = 'tie' elsif @player1_score > @player2_score @game_winner = 'player1' else @game_winner = 'player2' end end
determine_round_winner(player1_weapon, player2_weapon)
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 50 def determine_round_winner(player1_weapon, player2_weapon) if player1_weapon == player2_weapon @round_winner = 'tie' elsif player1_weapon == "r" && player2_weapon == "p" @round_winner = 'player2' elsif player1_weapon == "p" && player2_weapon == "t" @round_winner = 'player2' elsif player1_weapon == "t" && player2_weapon == "r" @round_winner = 'player2' else @round_winner = 'player1' end end
play(player2_name, weapon_selection_proc)
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 108 def play(player2_name, weapon_selection_proc) clear_screen puts "Esta jugando contra #{player2_name}." 3.times do announce_round puts "El Turno de Jugador 1:" player1_choice = request_player_choice puts "","El Turno de #{player2_name}:" player2_choice = weapon_selection_proc.call puts "#{player2_name} ha escogido: #{player2_choice}" determine_round_winner(player1_choice, player2_choice) award_points announce_round_winner(player2_name) end determine_game_winner announce_game_winner(player2_name) end
request_player_choice()
click to toggle source
# File lib/rocapapeltijeras/game.rb, line 41 def request_player_choice puts "Por favor, escoja un arma: 'r', 'p', o 't'" puts "r: Roca" puts "p: Papel" puts "t: Tijeras" response = gets.chomp.downcase verify_response(response, WEAPONS) end