Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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:

image text in transcribed

image text in transcribed

The following pics are the CompMove script

image text in transcribed

image text in transcribedimage text in transcribed

image text in transcribed

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

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

The Accidental Data Scientist

Authors: Amy Affelt

1st Edition

1573877077, 9781573877077

More Books

Students also viewed these Databases questions