mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-24 12:04:17 -08:00
81 lines
1.7 KiB
Ruby
81 lines
1.7 KiB
Ruby
SCREEN_WIDTH = 72
|
|
|
|
MOVE_WORDS = {
|
|
1 => 'PAPER',
|
|
2 => 'SCISSORS',
|
|
3 => 'ROCK'
|
|
}
|
|
|
|
WIN_TABLE = {
|
|
1 => 3,
|
|
2 => 1,
|
|
3 => 2
|
|
}
|
|
|
|
def center_text(text)
|
|
text.rjust((SCREEN_WIDTH / 2) + (text.size / 2))
|
|
end
|
|
|
|
def ask_for_number_of_games
|
|
loop do
|
|
puts "HOW MANY GAMES"
|
|
response = STDIN.gets.to_i
|
|
return response if response > 0 and response < 11
|
|
puts "SORRY, BUT WE AREN'T ALLOWED TO PLAY THAT MANY."
|
|
end
|
|
end
|
|
|
|
def ask_for_human_move
|
|
loop do
|
|
puts "3=ROCK...2=SCISSORS...1=PAPER"
|
|
puts "1...2...3...WHAT'S YOUR CHOICE"
|
|
response = STDIN.gets.to_i
|
|
return response if [1,2,3].include?(response)
|
|
puts "INVALID"
|
|
end
|
|
end
|
|
|
|
def calculate_result(human_move, computer_move)
|
|
return 'TIE' if human_move == computer_move
|
|
return 'WIN' if WIN_TABLE[human_move] == computer_move
|
|
'LOSE'
|
|
end
|
|
|
|
puts center_text('GAME OF ROCK, SCISSORS, PAPER')
|
|
puts center_text('CREATIVE COMPUTING MORRISTOWN, NEW JERSEY')
|
|
puts
|
|
puts
|
|
puts
|
|
|
|
number_of_games = ask_for_number_of_games
|
|
games_won = 0
|
|
games_lost = 0
|
|
|
|
number_of_games.times do |game_number|
|
|
puts
|
|
puts "GAME NUMBER #{game_number + 1}"
|
|
computer_move = rand(3) + 1
|
|
human_move = ask_for_human_move
|
|
puts "THIS IS MY CHOICE..."
|
|
puts "...#{MOVE_WORDS[computer_move]}"
|
|
|
|
case calculate_result(human_move, computer_move)
|
|
when 'WIN'
|
|
puts "YOU WIN!!!"
|
|
games_won += 1
|
|
when 'TIE'
|
|
puts "TIE GAME. NO WINNER."
|
|
when 'LOSE'
|
|
puts "WOW! I WIN!!!"
|
|
games_lost = games_lost += 1
|
|
end
|
|
end
|
|
|
|
puts
|
|
puts "HERE IS THE FINAL GAME SCORE:"
|
|
puts "I HAVE WON #{games_lost} GAME(S)."
|
|
puts "YOU HAVE WON #{games_won} GAME(S)."
|
|
puts "AND #{number_of_games - (games_lost + games_won)} GAME(S) ENDED IN A TIE."
|
|
puts "THANKS FOR PLAYING!!"
|
|
|