Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PImage imagen, gano;
- Ficha[] fichas; //array de Ficha
- void setup()
- {
- size(400, 400);
- fichas = new Ficha[16];
- imagen = loadImage("imagen.jpg");
- gano = loadImage("gano.jpg");
- // 16 numeros aleatorios
- int lista[] = new int[16];
- boolean ocupado[] = new boolean[16];
- for(int i=0; i<16; i++)
- {
- int numAleatorio = (int)((Math.random()*16));
- if (ocupado[numAleatorio]==false)
- {
- lista[i]=numAleatorio;
- ocupado[numAleatorio]=true;
- } else i=i-1;
- }
- // fichas
- for (int i=0; i<16; i++)
- {
- PVector Original = new PVector((i%4), (i/4)%4);
- PVector Actual = new PVector(lista[i]%4, (lista[i]/4)%4);
- Boolean Estado;
- if (lista[i]<15)
- {
- Estado = true;
- }
- else
- {
- Estado = false;
- }
- fichas[i] = new Ficha(Original, Actual, Estado);
- }
- }
- void draw()
- {
- background(0);
- for (int i=0; i<16; i++)
- {
- if ((fichas[i].estado==true))
- {
- fichas[i].mostrar();
- }
- }
- boolean objetivo = true;
- for (int i=0; i<16; i++)
- {
- if (fichas[i].posOri==fichas[i].posActu);
- else objetivo=false;
- }
- if (objetivo==true)
- {
- noLoop();
- image(gano, 100, 100, 200, 200);
- }
- }
- void checkLeft(int aClick)
- {
- if (fichas[aClick-1].estado==false)
- {
- PVector posActualAux=fichas[aClick].posActu;
- fichas[aClick].posActu=fichas[aClick-1].posActu;
- fichas[aClick-1].posActu=posActualAux;
- fichas[aClick].estado=false;
- fichas[aClick-1].estado=true;
- }
- }
- void checkRight(int aClick)
- {
- if (fichas[aClick+1].estado==false)
- {
- PVector posActualAux=fichas[aClick].posActu;
- fichas[aClick].posActu=fichas[aClick+1].posActu;
- fichas[aClick+1].posActu=posActualAux;
- fichas[aClick].estado=false;
- fichas[aClick+1].estado=true;
- }
- }
- void checkUp(int aClick)
- {
- if (fichas[aClick-4].estado==false)
- {
- PVector posActualAux=fichas[aClick].posActu;
- fichas[aClick].posActu=fichas[aClick-4].posActu;
- fichas[aClick-4].posActu=posActualAux;
- fichas[aClick].estado=false;
- fichas[aClick-4].estado=true;
- }
- }
- void checkDown(int aClick)
- {
- if (fichas[aClick+4].estado==false)
- {
- PVector posActualAux=fichas[aClick].posActu;
- fichas[aClick].posActu=fichas[aClick+4].posActu;
- fichas[aClick+4].posActu=posActualAux;
- fichas[aClick].estado=false;
- fichas[aClick+4].estado=true;
- }
- }
- void mousePressed()
- {
- int click=(((mouseX-(mouseX%100))+((mouseY-(mouseY%100))*4))/100);
- switch(click)
- {
- case 0:
- checkRight(click);
- checkDown(click);
- break;
- case 1:
- case 2:
- checkLeft(click);
- checkRight(click);
- checkDown(click);
- break;
- case 3:
- checkLeft(click);
- checkDown(click);
- break;
- case 4:
- case 8:
- checkRight(click);
- checkUp(click);
- checkDown(click);
- break;
- case 5:
- case 6:
- case 9:
- case 10:
- checkLeft(click);
- checkRight(click);
- checkUp(click);
- checkDown(click);
- break;
- case 7:
- case 11:
- checkLeft(click);
- checkUp(click);
- checkDown(click);
- break;
- case 12:
- checkRight(click);
- checkUp(click);
- break;
- case 13:
- case 14:
- checkLeft(click);
- checkRight(click);
- checkUp(click);
- break;
- case 15:
- checkLeft(click);
- checkUp(click);
- break;
- default:
- break;
- }
- }
- class Ficha
- {
- PVector posOri;
- PVector posActu;
- boolean estado;
- PImage img = new PImage(100, 100);
- Ficha(PVector pO, PVector pA, boolean pE)
- {
- posOri = pO;
- posActu = pA;
- estado = pE;
- }
- void mostrar()
- {
- img = imagen.get((int)posActu.x*100, (int)posActu.y*100, 100, 100);
- image(img, posOri.x*100, posOri.y*100);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement