Question: Matlab problem: I need to create a move for the computer in the tic-tac-toe game, which the computer will never loses. plz modify the codes
Matlab problem:
I need to create a move for the computer in the tic-tac-toe game, which the computer will never loses. plz modify the codes below to create a script for this.
Hint: you need to put some sort of strategy into the code.
Main script


(Below is the moving code, plz modify this code to create a move which the computer will never lose in the tic-tac-toe game)
function [P1move_index]=MyMove(board)
turn=(board~=0);
x1=(board==2)*-1;
x2=(board==1);
win_or_block = x1+x2;
if sum(sum(turn))==0
P1move_index=1;
return
elseif sum(sum(turn))==1
if(board(5)==0)
P1move_index=5;
return
else
P1move_index=1;
return
end
elseif sum(sum(turn))==2
if board(5)~=0
P1move_index = 9;
return
elseif board(9)~= 0
P1move_index = 3;
return
else
P1move_index = 5;
return
end
end
for i=1:3
if sum(win_or_block(i,:))==2
temp = [ find(win_or_block(i,:)==0)];
P1move_index = (temp-1)*3+i;
return
elseif sum(win_or_block(:,i))==2
temp =[find(win_or_block(:,i)==0)];
P1move_index= (i-1)*3 + temp;
return
end
end
if sum(win_or_block([1 5 9]))==2
if find(win_or_block([1 5 9])==0)==3
P1move_index = 9;
return
elseif find(win_or_block([1 5 9])==0)==2
P1move_index = 5;
return
elseif find(win_or_block([1 5 9])==0)==1
P1move_index = 1;
return
end
end
if sum(win_or_block([3 5 7]))==2
if find(win_or_block([3 5 7 ])==0)==3
P1move_index = 7;
return
elseif find(win_or_block([3 5 7])==0)==2
P1move_index = 5;
return
elseif find(win_or_block([3 5 7])==0)==1
P1move_index = 3;
return
end
end
for i=1:3
if sum(win_or_block(:,i))==-2
temp =[find(win_or_block(:,i)==0)];
P1move_index= (i-1)*3 + temp;
elseif sum(win_or_block(i,:))==-2
temp = [ find(win_or_block(i,:)==0)];
P1move_index = (temp-1)*3+i;
return
end
end
if sum(win_or_block([1 5 9]))==-2
if find(win_or_block([1 5 9])==0)==3
P1move_index = 9;
return
elseif find(win_or_block([1 5 9])==0)==2
P1move_index = 5;
return
elseif find(win_or_block([1 5 9])==0)==1
P1move_index = 1;
return
end
end
if sum(win_or_block([3 5 7]))==-2
if find(win_or_block([3 5 7 ])==0)==3
P1move_index = 7;
return
elseif find(win_or_block([3 5 7])==0)==2
P1move_index = 5;
return
elseif find(win_or_block([3 5 7])==0)==1
P1move_index = 3;
return
end
end
P1move_index = 1+min(find(board==0));
P1move_index = min(find(board==0));
end
FILE NAVIGATE EDIT BREAKPOINTS RUN board = zeros(3,3); % Determines starting player randomly % playerturn 1 indicates Player 1 starting % playe rturn 2 indicates Player 2 starting playerturn = round (rand ) +1 ; step = 0; winplayer = 0; playing=1; %initialize %Display message disp Welcome to E7 tic-tac-toe.'); disp (board); if playe rturn = 1 4 12 disp( 'Player 1 will start first' else 15 disp( Player 2 will start first' end %Iterate the game while playing == 1 8 disp(['Player num2str(playerturn)'1) % Player1's turn if playe rturn 1 1 zeroind find ( board-=0); P1move-index = Human (board); % Change Player 1 function here if -any ( ze ro ind P1move-index P1move-index) zero!nd (1); = end board (P|move-index) playe rturn = 2; currentplayer = 1; step = step + 1; 1; = 28 % Player2's turn 2else zeroind = find ( board=0)
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
