I'm making a Rock paper scissors game but have problems using cell variabels. I have a 9x2 cell variable i want to find on which row both colums have a 1, how do i do this? In this case I would like to know the position of row 2 so i can display the right outcome form the result array.
r = 'r'; s = 's'; p = 'p'; d = "Its a Draw!"; u1 = "User1 wins!"; u2 = "User2 wins!";
results = [r, r, d;
r, s, u1;
r, p, u2;
s, s, d;
s, p, u1;
s, r, u2;
p, p, d;
p, r, u1;
p, s, u2];
Res1 = strfind(results(:,1),'r');
Res2 = strfind(results(:,2),'s');
Res = [Res1, Res2];
disp(Res)
{[ 1]} {0×0 double} {[ 1]} {[ 1]} {[ 1]} {0×0 double} {0×0 double} {[ 1]} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double} {[ 1]}

 Accepted Answer

Matt J
Matt J on 20 Sep 2023
Edited: Matt J on 20 Sep 2023
I would use logical arrays instead of cells.
r = 'r'; s = 's'; p = 'p'; d = "Its a Draw!"; u1 = "User1 wins!"; u2 = "User2 wins!";
results = [r, r, d;
r, s, u1;
r, p, u2;
s, s, d;
s, p, u1;
s, r, u2;
p, p, d;
p, r, u1;
p, s, u2];
Lookup = results(:,1:2)==["r","s"]
Lookup = 9×2 logical array
1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1
row=find(all(Lookup,2))
row = 2
outcome=results(row,3)
outcome = "User1 wins!"

1 Comment

I was looking for exactly that, thank you!

Sign in to comment.

More Answers (0)

Categories

Find more on Just for fun in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!