## Matrix and element change and input help

on 23 May 2013

### David Sanchez (view profile)

This may be trivial but how do I get for a user input coords as a matrix, and to change the element to another number eg. a tic-tac-toe game player 1 inputs a coord to change a 0 in the matrix to a 1, and player 2 changes a 0 to -1. (player==0 when it is player 1's turn)

my code:

I=input('Number coordinate: ');
for a=1:3
for b=1:3
if B(a,b)==0
if I==1
if player==0
B(1,1)=1;
else
B(1,1)=-1;
end
elseif I==2
if player==0
B(1,2)=1;
else
B(1,2)=-1;
end
elseif I==3
if player==0
B(1,3)=1;
else
B(1,3)=-1;
end
elseif I==4
if player==0
B(2,1)=1;
else
B(2,1)=-1;
end
elseif I==5
if player==0
B(2,2)=1;
else
B(2,2)=-1;
end
elseif I==6
if player==0
B(2,3)=1;
else
B(2,3)=-1;
end
elseif I==7
if player==0
B(3,1)=1;
else
B(3,1)=-1;
end
elseif I==8
if player==0
B(3,2)=1;
else
B(3,2)=-1;
end
elseif I==9
if player==0
B(3,3)=1;
else
B(3,3)=-1;
end
end
else
disp('That is an invalid move')
end
end
end

problems with it: It will let a user set a piece on an already used part of a matrix and will always say that it is an invalid move (even if it is valid)

Could anyone help me to find a good way to do this?

-thanks, Alex

## Products

No products are associated with this question.

### David Sanchez (view profile)

on 23 May 2013

I think you are trying to do just this:

BB = reshape(B',9,1);
I=input('number coord:');
player = 1;
BB(I) = 2*(player == 0) - 1;
B = reshape(BB,3,3)';

aren't you?

Alex

### Alex (view profile)

on 23 May 2013

One more thing, how would you show if the input is valid or not (as an input must be a coordinate to an element with only a 0 in it).

David Sanchez

### David Sanchez (view profile)

on 23 May 2013

Do you mean this?

I=input('number coord:');
if ismember(I,1:9) % this checks whether I equals 1 2 3 4 5 6 7 8 or 9
BB = reshape(B',9,1);
player = 1;
BB(I) = 2*(player == 0) - 1;
B = reshape(BB,3,3)';
end
Alex

### Alex (view profile)

on 23 May 2013

I mean if the matrix has a -1 or a 1 in it already (this code will be in a loop), how can I find if it is in an already used spot, display that the input is invalid, and replay the input to give the user a chance to input a proper coordinate

### David Sanchez (view profile)

on 23 May 2013

>>a=input('insert matrix)
>>[1 2 3 4]

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi