How to create a grid for memory tile game?

2 visualizaciones (últimos 30 días)
Fatma Al-Sharji
Fatma Al-Sharji el 3 de Abr. de 2015
Respondida: thabo Mokomo el 17 de Nov. de 2016
How to create a grid for memory tile game in MATLAB. The grid should contain random number of rows and number of columns by the choice of the player.

Respuesta aceptada

Star Strider
Star Strider el 4 de Abr. de 2015
Editada: Star Strider el 4 de Abr. de 2015
The grid generation is easy:
nrows = 5; % User Input: Number Of Rows
ncols = 7; % User Input: NumberOf Columns
XL = [0 nrows];
YL = [0 ncols];
rowx = repmat([0:ncols], 2, 1);
rowy = [min(XL)*ones(1, ncols+1); max(XL)*ones(1, ncols+1)];
colx = [min(YL)*ones(1, nrows+1); max(YL)*ones(1, nrows+1)];
coly = repmat([0:nrows], 2, 1);
figure(1)
plot(rowx, rowy, 'g')
hold on
plot(colx, coly, 'g')
hold off
axis equal tight

Más respuestas (2)

Fatma Al-Sharji
Fatma Al-Sharji el 5 de Abr. de 2015
Editada: Star Strider el 5 de Abr. de 2015
Thank You so much!
But how can I display numbers on the tiles so that it displays two similar numbers? Here's my code but it didn't work out with me
A = randi(numRows,numCols);
nums = randperm((numRows*numCols)/2);
Could you please check what's the error with my code?
Thanks
  1 comentario
Star Strider
Star Strider el 5 de Abr. de 2015
Editada: Star Strider el 5 de Abr. de 2015
My pleasure!
Using the randi function is definitely the way to go, so that is the correct choice. I took it a bit further. (Note that you have to have the strsplit function to make my code work. If you don’t have it, there is a workaround with a for loop.)
This works:
nrows = 5; % User Input: Number Of Rows
ncols = 7; % User Input: NumberOf Columns
XL = [0 nrows];
YL = [0 ncols];
rowx = repmat([0:ncols], 2, 1);
rowy = [min(XL)*ones(1, ncols+1); max(XL)*ones(1, ncols+1)];
colx = [min(YL)*ones(1, nrows+1); max(YL)*ones(1, nrows+1)];
coly = repmat([0:nrows], 2, 1);
figure(1)
plot(rowx, rowy, 'g')
hold on
plot(colx, coly, 'g')
hold off
axis equal tight
N = randi(nrows*ncols, 1, nrows*ncols);
Ns = strsplit(sprintf('%2d\n', N));
Ns = Ns(1:end-1);
xmat = repmat([1:ncols], 1, nrows)-0.5;
ymat = repmat([1:nrows], 1, ncols)-0.5;
text(xmat, ymat, Ns, 'HorizontalAlignment','center', 'VerticalAlignment','middle')

Iniciar sesión para comentar.


thabo Mokomo
thabo Mokomo el 17 de Nov. de 2016
how do you add all the pictures

Community Treasure Hunt

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

Start Hunting!

Translated by