module Pc::Game
Public Class Methods
included(base)
click to toggle source
# File lib/pc/game.rb, line 7 def self.included(base) base.extend base end
Public Instance Methods
choose(choice)
click to toggle source
# File lib/pc/game.rb, line 27 def choose(choice) @move_p1 = choice @move_p2 = random_move say %{You played #{@move_p1} - I played #{@move_p2}}, next: ->{show_outcome} end
compare_moves(move_a, move_b)
click to toggle source
# File lib/pc/game.rb, line 46 def compare_moves(move_a, move_b) move_a <=> move_b end
moves()
click to toggle source
# File lib/pc/game.rb, line 19 def moves {} end
prompt_move()
click to toggle source
# File lib/pc/game.rb, line 23 def prompt_move ask %{Choose a move}, Hash[*moves.map{|k, v| [k, ->{choose v}]}.flatten] end
random_move()
click to toggle source
# File lib/pc/game.rb, line 33 def random_move moves.values.sample end
rules()
click to toggle source
# File lib/pc/game.rb, line 15 def rules '[no rules defined]' end
show_outcome()
click to toggle source
# File lib/pc/game.rb, line 37 def show_outcome outcome = case compare_moves(@move_p1, @move_p2) when 1 then %{You win!} when -1 then %{You lose!} when 0 then %{It’s a tie!} end say outcome, next: ->{exit} end
welcome()
click to toggle source
# File lib/pc/game.rb, line 11 def welcome say %{Rules: #{rules}}, next: ->{prompt_move} end