How do you program a TicTacToe game that allows one or two p
How do you program a TicTacToe game that allows one or two people to play within matlab?
Solution
function board = make_move(board, player)
%MAKE_MOVE Determine the next move of a player for tic tac toe
% The process is as folllows :
% 1. Find a winning position. If found, make the move and exit
% the function;
% 2. Find a position to block the other player from winning. If
% found, make the move and exit the function;
% 3. Otherwise, make a move to a random free location
n= size(board,1);
m= size(board,1);
rand1 = randi(n);
rand2 = randi(m);
done = 0;
while done ~= 1; % Checking to see if while loop should still be running
for i = 1:n % For each row
for j = 1:m % For each column, in each row
if board(i,j) == 0 % Is the vector 0, eg: empty?
board(i,j) = player; % If it is, let\'s try making a move here with the player value
check_win(board); % Is this a winning move? Has the game finished?
if check_win(board) == player % If check_win says player value (1 or -1) has won, return
return
else % Let\'s try a blocking attempt
board(j,i) = -1*player; % Switching the rows and column values around, and placing a move as opponent
if check_win(board) == -1*player % Checking to see if this is a winning move for opponent
board(j,i) = player; % If this is a winning move, block it by placing your move here
return
else % If cannot make winning move or cannot block a win
if board(m,n) == 0 % Use rand to generate vector position, checking to see if it is 0 (empty)
board(m,n) = player; % Place a move here
return
end
end
end
else
break
done = 0; % Should restart the process again if the original vector is not empty
end
end
end
end
