Skip to content

Instantly share code, notes, and snippets.

@davidhaley
Last active June 26, 2016 02:10
Show Gist options
  • Save davidhaley/85181ba401721fcaadd5d195327a96a1 to your computer and use it in GitHub Desktop.
Save davidhaley/85181ba401721fcaadd5d195327a96a1 to your computer and use it in GitHub Desktop.
require 'pry'
require_relative 'player'
# Two player math game.
class MathGame
RANDOM_MAX = 5
# Starts the program.
def initialize
ask_player_names
end
def ask_player_names
puts "Please enter a name for player 1."
player1_name = gets.strip!.squeeze(' ')
puts "Please enter a name for player 2."
player2_name = gets.strip!.squeeze(' ')
create_players(player1_name, player2_name)
end
def create_players(player1_name, player2_name)
@player1 = Player.new(player1_name)
@player2 = Player.new(player2_name)
@players = [@player1, @player2]
game(@players)
end
def generate_random_number
rand(RANDOM_MAX+1)
end
def game(players)
# binding.pry
until @player1.failures == 3 || @player2.failures == 3
@players.each do |player|
# binding.pry
generate_question(player.name)
prompt_player_for_answer
verify_answer(@answer)
puts "#{@answer_result}"
if @answer_result == false
player.failures += 1
if player.failures == 3
puts "#{player.name} has lost!"
puts "Final Score"
puts "#{@player1.name} rounds won: #{@player1.successes} || rounds lost: #{@player1.failures}"
puts "#{@player2.name} rounds won: #{@player2.successes} || rounds lost: #{@player2.failures}"
break
end
else
player.successes += 1
end
puts "#{@player1.name} has won #{@player1.successes} rounds and failed #{@player1.failures} rounds."
puts "#{@player2.name} has won #{@player2.successes} rounds and failed #{@player2.failures} rounds."
end
end
end
def generate_question(player)
@num1, @num2 = generate_random_number, generate_random_number
puts "#{player}, what is #{@num1} + #{@num2}?"
end
def prompt_player_for_answer
@answer = gets.strip!.to_i
end
def verify_answer(answer)
@answer_result = (@num1 + @num2 == answer)
end
end
game = MathGame.new
puts game
class Player
attr_reader :name
attr_accessor :failures, :successes
def initialize(name)
@name = name
@failures = 0
@successes = 0
end
def gain_a_point
@successes += 1
end
def lose_a_life
@failures += 1
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment