Advertisement
Guest User

Untitled

a guest
Oct 7th, 2015
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.25 KB | None | 0 0
  1. function Z048
  2. fprintf('Controles: 8-arriba 4-izquierda 2-abajo 6-derecha\n Ctrl+C-salir\n')
  3. n=input('Introduce el número de casillas por lado: ');
  4. A=zeros(n);
  5. f=1; F=0;
  6. t=datestr(now);
  7. s=t(17)*10+t(19);
  8. while s>0
  9. l=rand;
  10. s=s-1;
  11. end
  12. p=0;
  13. x=ceil(rand*n); y=ceil(rand*n);
  14. d=ceil(rand*7); v=2;
  15. if d==7
  16. v=4;
  17. end
  18. A(x,y)=v; fprintf('\n')
  19. for i=1:n
  20. for j=1:n-1
  21. fprintf('%5i',A(i,j))
  22. end
  23. j=n;
  24. fprintf('%5i\n\n',A(i,j))
  25. end
  26. while p==0
  27. mov=0;
  28. orden=input(' ');
  29. if orden==8
  30. m=n;
  31. while m>=2
  32. for i=(2:m)
  33. for j=(1:n)
  34. if A(i,j)~=0
  35. if A(i-1,j)==0
  36. A(i-1,j)=A(i,j);
  37. A(i,j)=0;
  38. mov=mov+1;
  39. elseif A(i-1,j)==A(i,j)
  40. A(i-1,j)=2*A(i-1,j);
  41. A(i,j)=0;
  42. mov=mov+1;
  43. end
  44. end
  45. end
  46. end
  47. m=m-1;
  48. end
  49. elseif orden==2
  50. m=1;
  51. while m<=n-1
  52. for i=(n-1:-1:m)
  53. for j=(1:n)
  54. if A(i,j)~=0
  55. if A(i+1,j)==0
  56. A(i+1,j)=A(i,j);
  57. A(i,j)=0;
  58. mov=mov+1;
  59. elseif A(i+1,j)==A(i,j)
  60. A(i+1,j)=2*A(i+1,j);
  61. A(i,j)=0;
  62. mov=mov+1;
  63. end
  64. end
  65. end
  66. end
  67. m=m+1;
  68. end
  69. elseif orden==6
  70. m=1;
  71. while m<=n-1
  72. for j=(n-1:-1:m)
  73. for i=(1:n)
  74. if A(i,j)~=0
  75. if A(i,j+1)==0
  76. A(i,j+1)=A(i,j);
  77. A(i,j)=0;
  78. mov=mov+1;
  79. elseif A(i,j+1)==A(i,j)
  80. A(i,j+1)=2*A(i,j+1);
  81. A(i,j)=0;
  82. mov=mov+1;
  83. end
  84. end
  85. end
  86. end
  87. m=m+1;
  88. end
  89. elseif orden==4
  90. m=n;
  91. while m>=2
  92. for j=(2:m)
  93. for i=(1:n)
  94. if A(i,j)~=0
  95. if A(i,j-1)==0
  96. A(i,j-1)=A(i,j);
  97. A(i,j)=0;
  98. mov=mov+1;
  99. elseif A(i,j-1)==A(i,j)
  100. A(i,j-1)=2*A(i,j-1);
  101. A(i,j)=0;
  102. mov=mov+1;
  103. end
  104. end
  105. end
  106. end
  107. m=m-1;
  108. end
  109. else
  110. fprintf('Controles: 8-arriba 4-izquierda 2-abajo 6-derecha\n Ctrl+C-salir\n')
  111. end
  112. for i=1:n
  113. for j=1:n
  114. if A(i,j)==2048
  115. F=1;
  116. end
  117. end
  118. end
  119. if F==1&&f==1
  120. fprintf('¡Enhorabuena!\n');
  121. f=0;
  122. end
  123. F=0; z=0;
  124. for i=1:n
  125. for j=1:n
  126. if A(i,j)==0
  127. z=z+1;
  128. end
  129. end
  130. end
  131. if z==0
  132. c=0;
  133. for j=1:n-1
  134. for i=1:n
  135. if A(i,j)==A(i,j+1)
  136. c=c+1;
  137. end
  138. end
  139. end
  140. for i=1:n-1
  141. for j=1:n
  142. if A(i,j)==A(i+1,j)
  143. c=c+1;
  144. end
  145. end
  146. end
  147. if c==0
  148. fprintf('Has perdido\n')
  149. return
  150. end
  151. end
  152.  
  153. if mov~=0
  154. u=2;
  155. while u~=0
  156. x=ceil(rand*n); y=ceil(rand*n);
  157. u=A(x,y);
  158. end
  159. d=ceil(rand*7); v=2;
  160. if d==7
  161. v=4;
  162. end
  163. A(x,y)=v; fprintf('\n')
  164. for i=1:n
  165. for j=1:n-1
  166. fprintf('%5i',A(i,j))
  167. end
  168. j=n;
  169. fprintf('%5i\n\n',A(i,j))
  170. end
  171. end
  172. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement