class Mastermind::Interact
Public Instance Methods
blank_line()
click to toggle source
# File lib/mastermind/interact.rb, line 22 def blank_line "\n" end
color_code(letter)
click to toggle source
# File lib/mastermind/interact.rb, line 255 def color_code(letter) Mastermind::COLOR_CODES[letter] end
color_guess(code)
click to toggle source
# File lib/mastermind/interact.rb, line 248 def color_guess(code) input = code.kind_of?(Array) ? code : code.chars colored = [] input.map { |char| colored << char.colorize(color_code(char)) } colored.join("") end
command_prompt()
click to toggle source
# File lib/mastermind/interact.rb, line 61 def command_prompt "Enter command: " end
guess_prompt(player)
click to toggle source
# File lib/mastermind/interact.rb, line 75 def guess_prompt(player) if player.turn_pos == 0 "\n"+ "#{player.name} - Enter your guess: " else "\n"+ " #{player.name} - Enter your guess: " end end
line_break()
click to toggle source
# File lib/mastermind/interact.rb, line 16 def line_break " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ".colorize(:green) end
multi_player_div()
click to toggle source
# File lib/mastermind/interact.rb, line 69 def multi_player_div "\n"+ "Player 1 Player 2\n"+ "===================================================================================" end
name_prompt(player_no)
click to toggle source
# File lib/mastermind/interact.rb, line 151 def name_prompt(player_no) "Player #{player_no} Name: " end
print_are_you_sure()
click to toggle source
# File lib/mastermind/interact.rb, line 189 def print_are_you_sure " Are you sure you want to quit? (y)es/(n)o".colorize(:red) end
print_farewell()
click to toggle source
# File lib/mastermind/interact.rb, line 115 def print_farewell " Thanks for playing " end
print_game_info()
click to toggle source
# File lib/mastermind/interact.rb, line 143 def print_game_info "" end
print_game_options()
click to toggle source
# File lib/mastermind/interact.rb, line 44 def print_game_options line_break + blank_line + " ==================================== | MASTERMIND GAME OPTS | |------------------------------------| | | | (s)ingle player | | (m)ulti player | | (q)uit | | | ==================================== ".colorize(:green) + blank_line end
print_get_secret()
click to toggle source
# File lib/mastermind/interact.rb, line 164 def print_get_secret "Time to create some secrets. Each player will create the secret That their opponent will be guessing." end
print_guess_stats(number_guesses, correct_pos, correct_color, guess, max_guesses, player)
click to toggle source
# File lib/mastermind/interact.rb, line 206 def print_guess_stats(number_guesses, correct_pos, correct_color, guess, max_guesses, player) if player.turn_pos == 0 "\n"+ "----------------------------------------\n"+ "Guess ##{number_guesses} (#{color_guess(guess)}): #{max_guesses - number_guesses} guesses remaining\n"+ "Correct position: #{correct_pos} Correct colors: #{correct_color}\n"+ "\n"+ "Nope... sorry #{player.name} let's try that again\n"+ "----------------------------------------\n" else "\n"+ " ----------------------------------------\n"+ " Guess ##{number_guesses} (#{color_guess(guess)}): #{max_guesses - number_guesses} guesses remaining\n"+ " Correct position: #{correct_pos} Correct colors: #{correct_color}\n"+ "\n"+ " Nope... sorry #{player.name} let's try that again\n"+ " ----------------------------------------\n" end end
print_instructions(colors)
click to toggle source
# File lib/mastermind/interact.rb, line 121 def print_instructions(colors) " Mastermind is a code breaking game for one or two players.\n\n"+ "##SINGLE PLAYER##".colorize(:green)+ "\nIn a single player game, when starting, the computer generates a secret code that you need to guess. The code will consist of 4 colors out of a possible 6. The possible colors are: #{colors} The code that you will be guessing will be something like 'RRGB'. Note that duplicate colors may be present in the code. You will be given 12 guesses to guess the correct answer. If you guess correctly, you will see the number of guesses it took you to guess the correct answer along with the amount of time that it took you to guess correctly.\n\n"+ "##MULTI PLAYER##".colorize(:green)+ "\nIn a multi player game, the game play is the same as single player, but each player chooses the code that their opponent must guess. After each player has chosen a secret code, players will alternate guessing their code until either, each player finishes, or the players run out of guesses. " end
print_intro()
click to toggle source
# File lib/mastermind/interact.rb, line 26 def print_intro line_break + blank_line + " ==================================== | MASTERMIND MAIN MENU | | ---------------------------------- | | | | (i)nstructions | | (p)lay | | (q)uit | | | ==================================== ".colorize(:green) + blank_line end
print_invalid(input)
click to toggle source
# File lib/mastermind/interact.rb, line 85 def print_invalid(input) " '#{input}' is not a valid command, please enter a valid command. " end
print_invalid_guess(player)
click to toggle source
# File lib/mastermind/interact.rb, line 194 def print_invalid_guess(player) if player.turn_pos == 0 "\n"+ "'#{player.command}' is not a valid guess,\n"+ "please guess again." else "\n"+ " '#{player.command}' is not a valid guess,\n"+ " please guess again." end end
print_out_of_guesses(number_guesses, correct_pos, correct_color, guess, max_guesses, player)
click to toggle source
# File lib/mastermind/interact.rb, line 91 def print_out_of_guesses(number_guesses, correct_pos, correct_color, guess, max_guesses, player) if player.turn_pos == 0 "\n"+ "----------------------------------------\n"+ "Guess ##{number_guesses} (#{color_guess(guess)}): #{max_guesses - number_guesses} guesses remaining\n"+ "Correct position: #{correct_pos} Correct colors: #{correct_color}\n"+ "\n"+ "Nope... sorry #{player.name}, that was your last\n"+ "guess and you still didn't get it right....\n"+ "The secret code was: #{color_guess(player.secret)}\n"+ "----------------------------------------\n" else "\n"+ " ----------------------------------------\n"+ " Guess ##{number_guesses} (#{color_guess(guess)}): #{max_guesses - number_guesses} guesses remaining\n"+ " Correct position: #{correct_pos} Correct colors: #{correct_color}\n"+ "\n"+ " Nope... sorry #{player.name}, that was your last\n"+ " guess and you still didn't get it right....\n"+ " The secret code was: #{color_guess(player.secret)}\n"+ " ----------------------------------------\n" end end
print_player_intro()
click to toggle source
# File lib/mastermind/interact.rb, line 147 def print_player_intro "Player(s) need to enter their name." end
print_player_secret_intro(player_name)
click to toggle source
# File lib/mastermind/interact.rb, line 155 def print_player_secret_intro(player_name) " #{player_name} - Pick the secret code for your opponent" end
print_round_intro(colors)
click to toggle source
# File lib/mastermind/interact.rb, line 169 def print_round_intro(colors) " A random code consisting of 4 colors has been generated for you. The valid color options are: #{colors} Enter your guess in the form of '#{color_guess("RGBY")}': ------------------------------ " end
print_round_over()
click to toggle source
# File lib/mastermind/interact.rb, line 181 def print_round_over " ************************************** * Round over * ************************************** " end
print_title()
click to toggle source
# File lib/mastermind/interact.rb, line 6 def print_title %q( _/ _/ _/ _/ _/ _/_/ _/_/ _/_/_/ _/_/_/ _/_/_/_/ _/_/ _/ _/_/ _/_/_/ _/_/ _/_/_/ _/_/_/ _/ _/ _/ _/ _/ _/_/ _/ _/_/_/_/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/_/ _/_/_/ _/_/ _/_/_/ _/ _/ _/ _/ _/ _/ _/ _/_/_/ ).colorize(:green) end
print_win(number_guesses, time, secret, player)
click to toggle source
# File lib/mastermind/interact.rb, line 226 def print_win(number_guesses, time, secret, player) if player.turn_pos == 0 "\n"+ "******************************\n"+ " CONGRATULATIONS\n"+ "******************************\n"+ " You guessed the code (#{color_guess(secret)})\n"+ " It took you #{number_guesses} guesses\n"+ " over #{time} seconds!\n"+ "******************************\n" else "\n"+ " ******************************\n"+ " CONGRATULATIONS\n"+ " ******************************\n"+ " You guessed the code (#{color_guess(secret)})\n"+ " It took you #{number_guesses} guesses\n"+ " over #{time} seconds!\n"+ " ******************************\n" end end
screen_clear()
click to toggle source
# File lib/mastermind/interact.rb, line 65 def screen_clear "\e[H\e[2J" end
secret_guess_prompt()
click to toggle source
# File lib/mastermind/interact.rb, line 160 def secret_guess_prompt "Enter secret code: " end