MATLAB Answers

Alex

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

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


Answer by David Sanchez
on 23 May 2013
>>a=input('insert matrix)
>>[1 2 3 4]

  0 Comments


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today