Question
Matlab Problem How to modify the following matlab script of the move computer, which makes it impossible to win the computer (the computer never loses).
Matlab Problem
How to modify the following matlab script of the move computer, which makes it impossible to win the computer (the computer never loses).
This is tic tac toe game, thanks!
The 1- 2 pic are the main script of the game:
The following pics are the CompMove script
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
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started