How to create a grid for memory tile game?

4 vues (au cours des 30 derniers jours)
Fatma Al-Sharji
Fatma Al-Sharji le 3 Avr 2015
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.

Réponse acceptée

Star Strider
Star Strider le 4 Avr 2015
Modifié(e) : Star Strider le 4 Avr 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

Plus de réponses (2)

Fatma Al-Sharji
Fatma Al-Sharji le 5 Avr 2015
Modifié(e) : Star Strider le 5 Avr 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 commentaire
Star Strider
Star Strider le 5 Avr 2015
Modifié(e) : Star Strider le 5 Avr 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')

Connectez-vous pour commenter.


thabo Mokomo
thabo Mokomo le 17 Nov 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