Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Z048
- fprintf('Controles: 8-arriba 4-izquierda 2-abajo 6-derecha\n Ctrl+C-salir\n')
- n=input('Introduce el número de casillas por lado: ');
- A=zeros(n);
- f=1; F=0;
- t=datestr(now);
- s=t(17)*10+t(19);
- while s>0
- l=rand;
- s=s-1;
- end
- p=0;
- x=ceil(rand*n); y=ceil(rand*n);
- d=ceil(rand*7); v=2;
- if d==7
- v=4;
- end
- A(x,y)=v; fprintf('\n')
- for i=1:n
- for j=1:n-1
- fprintf('%5i',A(i,j))
- end
- j=n;
- fprintf('%5i\n\n',A(i,j))
- end
- while p==0
- mov=0;
- orden=input(' ');
- if orden==8
- m=n;
- while m>=2
- for i=(2:m)
- for j=(1:n)
- if A(i,j)~=0
- if A(i-1,j)==0
- A(i-1,j)=A(i,j);
- A(i,j)=0;
- mov=mov+1;
- elseif A(i-1,j)==A(i,j)
- A(i-1,j)=2*A(i-1,j);
- A(i,j)=0;
- mov=mov+1;
- end
- end
- end
- end
- m=m-1;
- end
- elseif orden==2
- m=1;
- while m<=n-1
- for i=(n-1:-1:m)
- for j=(1:n)
- if A(i,j)~=0
- if A(i+1,j)==0
- A(i+1,j)=A(i,j);
- A(i,j)=0;
- mov=mov+1;
- elseif A(i+1,j)==A(i,j)
- A(i+1,j)=2*A(i+1,j);
- A(i,j)=0;
- mov=mov+1;
- end
- end
- end
- end
- m=m+1;
- end
- elseif orden==6
- m=1;
- while m<=n-1
- for j=(n-1:-1:m)
- for i=(1:n)
- if A(i,j)~=0
- if A(i,j+1)==0
- A(i,j+1)=A(i,j);
- A(i,j)=0;
- mov=mov+1;
- elseif A(i,j+1)==A(i,j)
- A(i,j+1)=2*A(i,j+1);
- A(i,j)=0;
- mov=mov+1;
- end
- end
- end
- end
- m=m+1;
- end
- elseif orden==4
- m=n;
- while m>=2
- for j=(2:m)
- for i=(1:n)
- if A(i,j)~=0
- if A(i,j-1)==0
- A(i,j-1)=A(i,j);
- A(i,j)=0;
- mov=mov+1;
- elseif A(i,j-1)==A(i,j)
- A(i,j-1)=2*A(i,j-1);
- A(i,j)=0;
- mov=mov+1;
- end
- end
- end
- end
- m=m-1;
- end
- else
- fprintf('Controles: 8-arriba 4-izquierda 2-abajo 6-derecha\n Ctrl+C-salir\n')
- end
- for i=1:n
- for j=1:n
- if A(i,j)==2048
- F=1;
- end
- end
- end
- if F==1&&f==1
- fprintf('¡Enhorabuena!\n');
- f=0;
- end
- F=0; z=0;
- for i=1:n
- for j=1:n
- if A(i,j)==0
- z=z+1;
- end
- end
- end
- if z==0
- c=0;
- for j=1:n-1
- for i=1:n
- if A(i,j)==A(i,j+1)
- c=c+1;
- end
- end
- end
- for i=1:n-1
- for j=1:n
- if A(i,j)==A(i+1,j)
- c=c+1;
- end
- end
- end
- if c==0
- fprintf('Has perdido\n')
- return
- end
- end
- if mov~=0
- u=2;
- while u~=0
- x=ceil(rand*n); y=ceil(rand*n);
- u=A(x,y);
- end
- d=ceil(rand*7); v=2;
- if d==7
- v=4;
- end
- A(x,y)=v; fprintf('\n')
- for i=1:n
- for j=1:n-1
- fprintf('%5i',A(i,j))
- end
- j=n;
- fprintf('%5i\n\n',A(i,j))
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement