Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. PImage imagen, gano;
  2. Ficha[] fichas; //array de Ficha
  3.  
  4. void setup()
  5. {
  6. size(400, 400);
  7. fichas = new Ficha[16];
  8. imagen = loadImage("imagen.jpg");
  9. gano = loadImage("gano.jpg");
  10.  
  11. // 16 numeros aleatorios
  12.  
  13. int lista[] = new int[16];
  14. boolean ocupado[] = new boolean[16];
  15.  
  16. for(int i=0; i<16; i++)
  17. {
  18. int numAleatorio = (int)((Math.random()*16));
  19.  
  20. if (ocupado[numAleatorio]==false)
  21. {
  22. lista[i]=numAleatorio;
  23. ocupado[numAleatorio]=true;
  24. } else i=i-1;
  25. }
  26.  
  27. // fichas
  28.  
  29. for (int i=0; i<16; i++)
  30. {
  31.  
  32. PVector Original = new PVector((i%4), (i/4)%4);
  33. PVector Actual = new PVector(lista[i]%4, (lista[i]/4)%4);
  34. Boolean Estado;
  35.  
  36. if (lista[i]<15)
  37. {
  38.  
  39. Estado = true;
  40. }
  41. else
  42. {
  43. Estado = false;
  44. }
  45.  
  46. fichas[i] = new Ficha(Original, Actual, Estado);
  47. }
  48. }
  49.  
  50. void draw()
  51. {
  52. background(0);
  53. for (int i=0; i<16; i++)
  54. {
  55. if ((fichas[i].estado==true))
  56. {
  57. fichas[i].mostrar();
  58. }
  59. }
  60.  
  61. boolean objetivo = true;
  62. for (int i=0; i<16; i++)
  63. {
  64. if (fichas[i].posOri==fichas[i].posActu);
  65. else objetivo=false;
  66. }
  67. if (objetivo==true)
  68. {
  69. noLoop();
  70. image(gano, 100, 100, 200, 200);
  71. }
  72. }
  73.  
  74. void checkLeft(int aClick)
  75. {
  76. if (fichas[aClick-1].estado==false)
  77. {
  78. PVector posActualAux=fichas[aClick].posActu;
  79. fichas[aClick].posActu=fichas[aClick-1].posActu;
  80. fichas[aClick-1].posActu=posActualAux;
  81. fichas[aClick].estado=false;
  82. fichas[aClick-1].estado=true;
  83. }
  84. }
  85.  
  86. void checkRight(int aClick)
  87. {
  88. if (fichas[aClick+1].estado==false)
  89. {
  90. PVector posActualAux=fichas[aClick].posActu;
  91. fichas[aClick].posActu=fichas[aClick+1].posActu;
  92. fichas[aClick+1].posActu=posActualAux;
  93. fichas[aClick].estado=false;
  94. fichas[aClick+1].estado=true;
  95. }
  96. }
  97.  
  98. void checkUp(int aClick)
  99. {
  100. if (fichas[aClick-4].estado==false)
  101. {
  102. PVector posActualAux=fichas[aClick].posActu;
  103. fichas[aClick].posActu=fichas[aClick-4].posActu;
  104. fichas[aClick-4].posActu=posActualAux;
  105. fichas[aClick].estado=false;
  106. fichas[aClick-4].estado=true;
  107. }
  108. }
  109.  
  110. void checkDown(int aClick)
  111. {
  112. if (fichas[aClick+4].estado==false)
  113. {
  114. PVector posActualAux=fichas[aClick].posActu;
  115. fichas[aClick].posActu=fichas[aClick+4].posActu;
  116. fichas[aClick+4].posActu=posActualAux;
  117. fichas[aClick].estado=false;
  118. fichas[aClick+4].estado=true;
  119. }
  120. }
  121.  
  122. void mousePressed()
  123. {
  124. int click=(((mouseX-(mouseX%100))+((mouseY-(mouseY%100))*4))/100);
  125.  
  126. switch(click)
  127. {
  128. case 0:
  129. checkRight(click);
  130. checkDown(click);
  131. break;
  132. case 1:
  133. case 2:
  134. checkLeft(click);
  135. checkRight(click);
  136. checkDown(click);
  137. break;
  138. case 3:
  139. checkLeft(click);
  140. checkDown(click);
  141. break;
  142. case 4:
  143. case 8:
  144. checkRight(click);
  145. checkUp(click);
  146. checkDown(click);
  147. break;
  148. case 5:
  149. case 6:
  150. case 9:
  151. case 10:
  152. checkLeft(click);
  153. checkRight(click);
  154. checkUp(click);
  155. checkDown(click);
  156. break;
  157. case 7:
  158. case 11:
  159. checkLeft(click);
  160. checkUp(click);
  161. checkDown(click);
  162. break;
  163. case 12:
  164. checkRight(click);
  165. checkUp(click);
  166. break;
  167. case 13:
  168. case 14:
  169. checkLeft(click);
  170. checkRight(click);
  171. checkUp(click);
  172. break;
  173. case 15:
  174. checkLeft(click);
  175. checkUp(click);
  176. break;
  177. default:
  178. break;
  179. }
  180. }
  181.  
  182. class Ficha
  183. {
  184. PVector posOri;
  185. PVector posActu;
  186. boolean estado;
  187. PImage img = new PImage(100, 100);
  188.  
  189. Ficha(PVector pO, PVector pA, boolean pE)
  190. {
  191. posOri = pO;
  192. posActu = pA;
  193. estado = pE;
  194. }
  195.  
  196. void mostrar()
  197. {
  198. img = imagen.get((int)posActu.x*100, (int)posActu.y*100, 100, 100);
  199. image(img, posOri.x*100, posOri.y*100);
  200. }
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement