lib/games/tictactoe/game.rb in games_bfox-0.3.0 vs lib/games/tictactoe/game.rb in games_bfox-0.4.0
- old
+ new
@@ -1,21 +1,40 @@
require_relative '../shared/game'
module TTT
class Game < Shared::Game
- attr_accessor :won_flag
+ def one_time_setup
+ self.players = players_factory.generate_players
+ number_of_rows_cols = get_board_rows
+ self.board = board_builder.generate_empty_board(number_of_rows_cols)
+ end
- def local_setup
+ def every_time_setup
self.won_flag = false
end
+ def get_board_rows
+ #need this if else logic because if computer is difficult, it runs minimax, which is too slow to allow for more than 3 rows/cols
+ if second_player_expert_computer?
+ io_helpers.get_number_of_rows_cols_max_3
+ else
+ io_helpers.get_number_of_rows_cols_max_9
+ end
+ end
+ def change_game_state(move)
+ change_square(move, current_player_value)
+ if !won?
+ move_forward_one_turn
+ end
+ end
+
def over?
- won_flag || over_with_no_winner?
+ won_flag || no_more_turns?
end
- def over_with_no_winner?
+ def no_more_turns?
board.full?
end
def won?
if won_flag
@@ -27,10 +46,28 @@
else
false
end
end
+ def reset_game
+ reset_board
+ self.number_of_turns_taken = 0
+ self.won_flag = false
+ end
+
+ def reset_board
+ self.board = generate_empty_board(number_of_rows_cols)
+ end
+
+ def number_of_rows_cols
+ board.number_of_rows_cols
+ end
+
+ def generate_empty_board(number_of_rows_cols)
+ board_builder.generate_empty_board(number_of_rows_cols)
+ end
+
def available_choices
board.available_choices
end
def player_1_value
@@ -43,18 +80,14 @@
def current_player_value
current_player.value
end
- def current_player_difficult_computer?
- current_player_computer? && current_player.difficulty_level == :difficult
- end
-
- def current_player_easy_computer?
- current_player_computer? && current_player.difficulty_level == :easy
- end
-
def change_square(display_value, current_player_value)
board.change_square(display_value, current_player_value)
+ end
+
+ def get_player_choice(current_player_name, available_choices)
+ io_helpers.get_player_choice(current_player_name, available_choices)
end
end
end