Last active
June 26, 2016 02:10
-
-
Save davidhaley/85181ba401721fcaadd5d195327a96a1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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