From 0f2242b5a3f2b6ff423667e57788d6df8ce40a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Gaete=20Fern=C3=A1ndez?= <168493763+clifford1one@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:06:41 -0300 Subject: [PATCH] codigo foro jigsaw puzzle --- .../comentarios_jigsawForo.pde | 134 ++++++++++++++++++ .../comentarios_jigsawForo/data/d3s.jpg | Bin 0 -> 34861 bytes 2 files changed, 134 insertions(+) create mode 100644 07-clifford1one/clase-14/comentarios_jigsawForo/comentarios_jigsawForo.pde create mode 100644 07-clifford1one/clase-14/comentarios_jigsawForo/data/d3s.jpg diff --git a/07-clifford1one/clase-14/comentarios_jigsawForo/comentarios_jigsawForo.pde b/07-clifford1one/clase-14/comentarios_jigsawForo/comentarios_jigsawForo.pde new file mode 100644 index 00000000..e1aec031 --- /dev/null +++ b/07-clifford1one/clase-14/comentarios_jigsawForo/comentarios_jigsawForo.pde @@ -0,0 +1,134 @@ +int grosorXico = 200; //tamaño del "ejemplo" de la imagen resuelta +PImage small; //imagen vista previa + +//Variables para el puzle y sus piezas +PImage img; //la imagen original +PImage[] pieces = new PImage[16]; //este es un array que almacena las 16 piezas +int[] positions = new int[16]; // Array que almacena la posición actual de cada pieza +int piezaSelected = -1; //variable que sabe qué pieza está seleccionada + +void settings() { + img = loadImage("d3s.jpg"); //cargar imagen + if (img == null) { + println("Image not loaded! Check the file path."); + exit(); //si no encuentra la imagen, imprime y escapa! + } + size(img.width + grosorXico, img.height); //tamaño ventana, considera imgOG + example +} + +void setup() { + // Initialize positions in order + for (int i = 0; i < positions.length; i++) { + positions[i] = i; + } + + // Resize small image + small = img.get(); + small.resize(grosorXico, 0); //la imgOG se duplica y se escala pa la example + + // Divide la imagen en 16 piezas + int pieceWidth = floor(img.width / 4); //dice que cada pieza mide 1/4 del imgOG(X) + int pieceHeight = floor(img.height / 4); //dice que cada pieza mide 1/4 del imgOG(Y) + + + int index = 0; + for (int row = 0; row < 4; row++) { //dividir la img en 4 filas + for (int col = 0; col < 4; col++) {//dividir la img en 4 columnas + pieces[index++] = img.get(col * pieceWidth, row * pieceHeight, pieceWidth, pieceHeight); + } + } + + // Shuffle positions to ensure solvability + do { + shufflePositions(); //variable para revolver las piezas + } while (!isSolvable());//si el puzle no tiene solución, repetir el paso anterior + + textAlign(CENTER, CENTER); //alinear el texto al centro +} + +void draw() { + background(0); //fondo color negro noche + + // Draw pieces + int pieceWidth = floor(img.width / 4); //dibujar las piezas + int pieceHeight = floor(img.height / 4);//dibujar las piezas + + for (int i = 0; i < positions.length; i++) { + int x = (i % 4) * pieceWidth; //calcula la posicion X de la grilla + int y = (i / 4) * pieceHeight;//calcula la posicion Y de la grilla + image(pieces[positions[i]], x, y); //dibuja las piezas + + // Resaltar la pieza seleccionada + if (piezaSelected == i) { + stroke(255, 0, 0); + strokeWeight(4); + noFill(); + rect(x, y, pieceWidth, pieceHeight); + } + } + + // Dibula la imgExample + image(small, img.width, 0); + + // Ceckear si el puzle ta resuelto y mostrar animación de celebración + if (isFinished()) { + textSize(100 + sin(frameCount * 0.15) * 50); + fill(random(255), random(255), random(255)); + text("DONE!", width / 2, height / 2); + } +} + +void mousePressed() { + //esta parte maneja el "intercambio" de piezas cuando las clickeas + int pieceWidth = floor(img.width / 4); + int pieceHeight = floor(img.height / 4); + + if (mouseX < img.width) { + int index = floor(mouseX / pieceWidth) + floor(mouseY / pieceHeight) * 4; + if (piezaSelected < 0) { + piezaSelected = index; //si el mouse esta dentro de la grilla, selecciona la pieza bajo el mouse + } else { + swapPositions(piezaSelected, index); + piezaSelected = -1; + } + } +} + +void swapPositions(int a, int b) { + //intercambiar piezas + int temp = positions[a]; + positions[a] = positions[b]; + positions[b] = temp; +} + +void shufflePositions() { + //mezclar las posiciones de las piezas + for (int i = 1; i < positions.length; i++) { + int j = int(random(0, i + 1)); + swapPositions(i, j); + } +} + +boolean isSolvable() { + //verifica que sea posible resolver el puzle + int inversions = 0; + for (int i = 0; i < positions.length; i++) { + for (int j = i + 1; j < positions.length; j++) { + if (positions[i] > positions[j]) { + inversions++; + } + } + } + // Puzzle is solvable if the number of inversions is even + return inversions % 2 == 0; +} + +boolean isFinished() { + //verifica que todas las piezas esten listas en su lugar final + for (int i = 0; i < positions.length; i++) { + if (positions[i] != i) { + return false; + } + } + return true; +} diff --git a/07-clifford1one/clase-14/comentarios_jigsawForo/data/d3s.jpg b/07-clifford1one/clase-14/comentarios_jigsawForo/data/d3s.jpg new file mode 100644 index 0000000000000000000000000000000000000000..202790b7110a7a017e37391f9a14c614d06a9cb5 GIT binary patch literal 34861 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