Class: CLIGameSetup
Instance Attribute Summary collapse
-
#ui ⇒ Object
Returns the value of attribute ui.
Instance Method Summary collapse
- #get_board ⇒ Object
- #get_difficulty_level(type) ⇒ Object
- #get_player_type(marker) ⇒ Object
- #get_settings ⇒ Object
-
#initialize ⇒ CLIGameSetup
constructor
A new instance of CLIGameSetup.
- #invalid_board_size(rows) ⇒ Object
- #invalid_level(level) ⇒ Object
- #invalid_type(type, marker) ⇒ Object
- #player_type_by_level(level) ⇒ Object
- #set_up_players ⇒ Object
- #valid_board_size?(input) ⇒ Boolean
- #valid_level?(level) ⇒ Boolean
- #valid_type?(type) ⇒ Boolean
Constructor Details
#initialize ⇒ CLIGameSetup
Returns a new instance of CLIGameSetup.
11 12 13 |
# File 'lib/game_setup.rb', line 11 def initialize @ui = CLIUI.new end |
Instance Attribute Details
#ui ⇒ Object
Returns the value of attribute ui.
10 11 12 |
# File 'lib/game_setup.rb', line 10 def ui @ui end |
Instance Method Details
#get_board ⇒ Object
72 73 74 75 76 |
# File 'lib/game_setup.rb', line 72 def get_board rows = ui.request_board_size valid_board_size?(rows) ? ui.(rows) : invalid_board_size(rows) CLIBoard.new(rows.to_i) end |
#get_difficulty_level(type) ⇒ Object
43 44 45 46 47 48 |
# File 'lib/game_setup.rb', line 43 def get_difficulty_level(type) return type if type == HUMAN_PLAYER level = ui.request_difficulty_level valid_level?(level) ? ui.(level) : invalid_level(level) player_type_by_level(level) end |
#get_player_type(marker) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/game_setup.rb', line 36 def get_player_type(marker) type = ui.request_player_type(marker) validated_type = valid_type?(type) ? get_difficulty_level(type) : invalid_type(type, marker) ui.(validated_type, marker) validated_type end |
#get_settings ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/game_setup.rb', line 15 def get_settings settings = {} begin players = set_up_players settings[:board] = get_board settings[:player_one] = players.player_one settings[:player_two] = players.player_two settings[:player_first_move] = players.player_goes_first settings rescue Interrupt ui. exit end end |
#invalid_board_size(rows) ⇒ Object
83 84 85 86 |
# File 'lib/game_setup.rb', line 83 def invalid_board_size(rows) ui.(rows) get_board end |
#invalid_level(level) ⇒ Object
63 64 65 66 |
# File 'lib/game_setup.rb', line 63 def invalid_level(level) ui.(level) get_difficulty_level(COMPUTER_PLAYER) end |
#invalid_type(type, marker) ⇒ Object
54 55 56 57 |
# File 'lib/game_setup.rb', line 54 def invalid_type(type, marker) ui.(type) get_player_type(marker) end |
#player_type_by_level(level) ⇒ Object
68 69 70 |
# File 'lib/game_setup.rb', line 68 def player_type_by_level(level) level == HARD_LEVEL ? AI_PLAYER : COMPUTER_PLAYER end |
#set_up_players ⇒ Object
30 31 32 33 34 |
# File 'lib/game_setup.rb', line 30 def set_up_players player_one_type = get_player_type(MARKER_X) player_two_type = get_player_type(MARKER_O) PlayerFactory.new(player_one_type, player_two_type) end |
#valid_board_size?(input) ⇒ Boolean
78 79 80 81 |
# File 'lib/game_setup.rb', line 78 def valid_board_size?(input) rows = input.to_i rows.is_a?(Integer) && (rows > 2 && rows < 6) end |
#valid_level?(level) ⇒ Boolean
59 60 61 |
# File 'lib/game_setup.rb', line 59 def valid_level?(level) (level == HARD_LEVEL) || (level == EASY_LEVEL) end |
#valid_type?(type) ⇒ Boolean
50 51 52 |
# File 'lib/game_setup.rb', line 50 def valid_type?(type) (type == HUMAN_PLAYER) || (type == COMPUTER_PLAYER) end |