Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Matrix and element change and input help

Asked by Alex on 23 May 2013

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

0 Comments

Alex

Products

No products are associated with this question.

2 Answers

Answer by David Sanchez on 23 May 2013
Accepted answer

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?

7 Comments

Alex 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 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 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
Answer by David Sanchez on 23 May 2013
>>a=input('insert matrix)
>>[1 2 3 4]

0 Comments

David Sanchez

Contact us