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