Skip to content

Commit

Permalink
Implemented generation of AI move if the first player is a computer o…
Browse files Browse the repository at this point in the history
…pponent
  • Loading branch information
lisahamm committed Mar 11, 2015
1 parent 444ff4e commit c42d0cb
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 13 deletions.
16 changes: 13 additions & 3 deletions lib/game_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ def create_game(params)
def player_settings(params)
player_settings = []
ai = computer_opponent(params) != nil
if params[:player_order] = 'first'
if params[:player_order] == 'first'
player_settings[0] = {mark: params[:player_mark], ai: false}
player_settings[1] = {mark: opponent_mark(params[:player_mark]), ai: ai}
else
Expand All @@ -21,8 +21,18 @@ def opponent_mark(mark)
end

def computer_opponent(params)
if params[:computer_opponent] == 'yes'
params[:player_order] == 'first' ? 'player2' : 'player1'
player_order = params[:player_order]
if params[:computer_opponent] == "yes"
if player_order == "first"
return "player2"
else
return "player1"
end
end
nil
end

def array_to_board(array)
TicTacToe::Board.new(cells: array)
end
end
25 changes: 15 additions & 10 deletions tic_tac_toe_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,37 +22,42 @@ class TicTacToeController < Sinatra::Base
erb :index
else
game = create_game(params)
if computer_opponent(params) == 'player1'
game.take_turn(generate_ai_move)
switch_turn
if computer_opponent(params) == "player1"
game.take_turn(game.generate_ai_move)
game.switch_turn
end
session[:game] = game
session[:player_settings] = player_settings(params)
session[:current_player] = game.current_player
session[:player1] = game.player1
session[:player2] = game.player2
session[:moves] = game.board.to_array
redirect to('/game')
end
end

get '/game' do
game = session[:game]
@board = game.board
@board = TicTacToe::Board.new(cells: session[:moves])
erb :board
end

post '/make_move' do
game = session[:game]
board = array_to_board(session[:moves])
game = TicTacToe::Game.new(board, session[:player_settings])
game.current_player = session[:current_player]
move = params[:move].to_i
game.take_turn(move)
game.switch_turn
redirect to('/game_over') if !game.in_progress?
game.take_turn(game.generate_ai_move)
game.switch_turn
redirect to('/game_over') if !game.in_progress?
session[:game] = game
session[:moves] = game.board.to_array
session[:current_player] = game.current_player
redirect to('/game_over') if !game.in_progress?
redirect to('/game')
end

get '/game_over' do
@board = session[:game].board
@board = TicTacToe::Board.new(cells: session[:moves])
erb :game_over
end

Expand Down

0 comments on commit c42d0cb

Please sign in to comment.