From b4fa9ed710314097366fa11a6934ad43aade24b4 Mon Sep 17 00:00:00 2001 From: Stefano Rossi Date: Thu, 10 Jul 2025 03:30:51 +0200 Subject: [PATCH] first commit --- CambiaTitoloeIcona.pde | 16 ++++ Celle.pde | 83 +++++++++++++++++++++ Classe_Cella.pde | 119 ++++++++++++++++++++++++++++++ Classe_ThRisolutore.pde | 160 ++++++++++++++++++++++++++++++++++++++++ Classe_ThTiming.pde | 44 +++++++++++ KeyPressed.pde | 103 ++++++++++++++++++++++++++ LICENSE | 26 +++++++ MouseClicked.pde | 47 ++++++++++++ README.md | 54 ++++++++++++++ SudoSolver.pde | 97 ++++++++++++++++++++++++ data/me.jpg | Bin 0 -> 31636 bytes images/main.png | Bin 0 -> 19006 bytes images/resolv.png | Bin 0 -> 33585 bytes 13 files changed, 749 insertions(+) create mode 100644 CambiaTitoloeIcona.pde create mode 100644 Celle.pde create mode 100644 Classe_Cella.pde create mode 100644 Classe_ThRisolutore.pde create mode 100644 Classe_ThTiming.pde create mode 100644 KeyPressed.pde create mode 100644 LICENSE create mode 100644 MouseClicked.pde create mode 100644 README.md create mode 100644 SudoSolver.pde create mode 100644 data/me.jpg create mode 100644 images/main.png create mode 100644 images/resolv.png diff --git a/CambiaTitoloeIcona.pde b/CambiaTitoloeIcona.pde new file mode 100644 index 0000000..af32808 --- /dev/null +++ b/CambiaTitoloeIcona.pde @@ -0,0 +1,16 @@ +PImage fai_iconi; +PGraphics fai_icong; +String fai_filename; + +void frameAndIcon(String frameText, String iconFilename) { + if ( fai_filename == null || !fai_filename.equals(iconFilename) ) { + fai_iconi = loadImage(iconFilename); + fai_icong = createGraphics(16, 16, JAVA2D); + fai_filename = iconFilename; + } + surface.setTitle( frameText ); + fai_icong.beginDraw(); + fai_icong.image( fai_iconi, 0, 0 ); + fai_icong.endDraw(); + frame.setIconImage(fai_icong.image); +} \ No newline at end of file diff --git a/Celle.pde b/Celle.pde new file mode 100644 index 0000000..5626039 --- /dev/null +++ b/Celle.pde @@ -0,0 +1,83 @@ +private void creaCelle(){ + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + celle[r][c] = new Cella(r, c, lato/cellePerLato); + } + } +} + +private void risolviSudoku(){ + new thRisolutore(celle); +} + +//metodo per l inserimento del numero nella cella, questo metodo controlla se il numero è inseribile +// e lo inserisce, se non lo è ritorna r e c della cella che va in conflitto +private void inserisciNumero(int r, int c, int n){ + //println(c); + //println(r); + + Cella[] cellaConflitto = new Cella[3]; + cellaConflitto[1] = null; + cellaConflitto[1] = null; + cellaConflitto[2] = null; + + //Controllo in tutta la COLONNA se è già presente il numero che si vuole inserire + for(int iC = 0; iC < 9; iC++){ + if(n != 0 && n == celle[r][iC].getN()){ + cellaConflitto[0] = new Cella(r, iC, n); + //println("numero gia presente alla Col: " + r + " e alla rig: " + iC); + //println("n conf " + celle[c][iC].getN() + " n nuovo: " + celle[c][r].getN()); + } + } + + //Controllo in tutta la RIGA se è già presente il numero che si vuole inserire + for(int iR = 0; iR < 9; iR++){ + if(n != 0 && n == celle[iR][c].getN()){ + cellaConflitto[1] = new Cella(iR, c, n); + //println("numero gia presente alla Col: " + iR + " e alla rig: " + c); + //println("n conf " + celle[c][iR].getN() + " n nuovo: " + celle[c][r].getN()); + } + } + + //Controllo che nella regione non è già presente lo stesso numero + //trovo la regione della cella + int cR = floor(r/3); + int rR = floor(c/3); + + //println(rR); + //println(cR); + + for(int i = 0; i <3; i++){ + for(int j = 0; j <3; j++){ + if(n != 0 && n == celle[cR*3 + j][rR*3 + i].getN()){ + //controllo che cella modificata e controllata siano diverse + if(r != (cR*3 + j) && c != (rR*3 + i)){ //<>// + cellaConflitto[2] = new Cella(cR*3 + j, rR*3 + i, n); + + //println(cR*3 + j + " " + r); + //println(rR*3 + i + " " + c); + //println(); + } + //println(celle[rR*3 + j][cR*3 + i].getN()); + } + //println(rR*3 + j + " " + c); + //println(cR*3 + i + " " + r); + //println(); + } + } + + + if(cellaConflitto[0] != null){ + new ThTiming(cellaConflitto[0].getR(), cellaConflitto[0].getC()).inizia(); + } + if(cellaConflitto[1] != null){ + new ThTiming(cellaConflitto[1].getR(), cellaConflitto[1].getC()).inizia(); + } + if(cellaConflitto[2] != null){ + new ThTiming(cellaConflitto[2].getR(), cellaConflitto[2].getC()).inizia(); + } + + if(cellaConflitto[0] == null && cellaConflitto[1] == null && cellaConflitto[2] == null){ + celle[r][c].setN(n); + } +} diff --git a/Classe_Cella.pde b/Classe_Cella.pde new file mode 100644 index 0000000..2821524 --- /dev/null +++ b/Classe_Cella.pde @@ -0,0 +1,119 @@ +private class Cella{ + private int R; //Riga della cella + private int C; //Colonna della cella + private int L; //lato + private int N; //numero contenuto nella cella + private color ColCella; // colore bg della cella + private color ColN; //colore del numero + private int pntFontN; //grnadezza carattere + private color warningColor; //colore sfondo per evidenziare celle in conflitto col nuovo num da inserire + private boolean fissa; + private boolean selezionata; //true se la cella è stata cliccata + + //COSTRUTTORE + public Cella(int R, int C, int L){ + this.R = R; + this.C = C; + this.L = L; + + this.N = 0; + this.ColCella = color(0, 200, 200, 80); //Azzurro trasp + this.warningColor = color(255, 0, 0, 0); //rosso completamente trasparente + this.pntFontN = 20; + this.selezionata = false; + this.fissa = false; + this.ColN = color(0, 102, 153); //blu chiaro + } + + //METODI + public void toggleFissa(){ + this.fissa = !this.fissa; + //println(fissa); + if(this.fissa){ + this.ColN = color(0, 0, 0); //nero + this.ColCella = color(255, 128, 0, 200); //arancione + }else{ + this.ColN = color(0, 102, 153); //blu chiaro + this.ColCella = color(0, 200, 200, 80); //Azzurro trasp + } + } + + //GETTER E SETTER + public boolean isSelezionata() { + return this.selezionata; + } + + public void setSelezionata(boolean selezionata) { + this.selezionata = selezionata; + } + + public int getX() { + return this.R * this.L; + } + public int getY() { + return this.C * this.L; + } + + public int getL() { + return this.L; + } + + public void setR(int R) { + this.R = R; + } + + public int getR() { + return this.R; + } + + public void setC(int C) { + this.C = C; + } + + public int getC() { + return this.C; + } + + public void setN(int N) { + this.N = N; + } + + public int getN() { + return this.N; + } + + public void setWarningColor(color warningColor) { + this.warningColor = warningColor; + } + + public int getWarningColor() { + return this.warningColor; + } + + public void setPntFontN(int pntFontN) { + this.pntFontN = pntFontN; + } + + public int getPntFontN() { + return this.pntFontN; + } + + public void setColN(color ColN) { + this.ColN = ColN; + } + + public color getColN() { + return this.ColN; + } + public color getColCella() { + return this.ColCella; + } + + public void setFissa(boolean fissa) { + this.fissa = fissa; + } + + public boolean isFissa() { + return this.fissa; + } +} \ No newline at end of file diff --git a/Classe_ThRisolutore.pde b/Classe_ThRisolutore.pde new file mode 100644 index 0000000..ec07860 --- /dev/null +++ b/Classe_ThRisolutore.pde @@ -0,0 +1,160 @@ +public class thRisolutore extends Thread{ + private Cella[][] celleSoluzione; + private boolean esecuzione; + private boolean arretra; + + public thRisolutore(Cella[][] celleInput) { + celleSoluzione = new Cella[9][9]; + + //creao un secondo array bidim celle dove andrò a salvare i numeri della soluzione + //ora riempo l array soluzioni con i numeri gia inseriti e li metto fissi + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + celleSoluzione[c][r] = new Cella(c, r, lato/cellePerLato); + + celleSoluzione[c][r].setN(celleInput[c][r].getN()); + + if(celleSoluzione[c][r].getN() > 0){ + celleSoluzione[c][r].setFissa(true); + //println("Riga" + r + "Colonna" + c + "è fissata: " + celleSoluzione[c][r].getN()); + } + } + } + + //faccio subito partire il thread + this.inizia(); + } + + public void inizia(){ + this.esecuzione = true; + this.start(); + } + + boolean isEsecuzione() { + return this.esecuzione; + } + + private boolean inserisciVal(int r, int c, int n){ + //println("provo con " + n); + //Controllo in tutta la COLONNA se è già presente il numero che si vuole inserire + for(int iC = 0; iC < 9; iC++){ + //println("c: " + iC); + if(n != 0 && n == celleSoluzione[iC][r].getN()){ + //println(n + " gia presente in c: " + iC); + + return true; + }//else println(n + " non presente in c: " + iC); + } + + //Controllo in tutta la COLONNA se è già presente il numero che si vuole inserire + for(int iR = 0; iR < 9; iR++){ + //println("r: " + iR); + if(n != 0 && n == celleSoluzione[c][iR].getN()){ + //println(n + " gia presente in c: " + iR); + + return true; + }//else println(n + " non presente in c: " + iR); + } + + //Controllo che nella regione non è già presente lo stesso numero + //trovo la regione della cella + int cR = floor(c/3); + int rR = floor(r/3); + + for(int iR = 0; iR <3; iR++){ + for(int iC = 0; iC <3; iC++){ + if(n != 0 && n == celleSoluzione[cR*3 + iC][rR*3 + iR].getN()){ + //controllo che cella modificata e controllata siano diverse + if(c != (cR*3 + iC) && r != (rR*3 + iR)){ + return true; + } + } + } + } + + //try { + // Thread.sleep(500); + //}catch(InterruptedException e) { + // esecuzione = false; + //} + + celleSoluzione[c][r].setN(n); + return false; + } + + public void run() + { + while(esecuzione){ + celle = celleSoluzione; + boolean errore; //numero inserito non valido + int prove; + errore = true; + try { + celle = celleSoluzione; + for(int r = 0; r < 9; r++){ + for(int c = 0; c < 9; c++){ + + //println(r + " " + c); + //parto dalla prima cella in alto a sx, controlo se è non è fissa altrimenti la salto + if(!celleSoluzione[c][r].isFissa()){ + arretra = false; + //println("cella non fissa: " + c); + if(celleSoluzione[c][r].getN() < 9){ + //println("n < 9: "); + errore = true; + prove = 1; + while(errore){ + //quando arrivo a dover inserire 10 nella esco dal while e torno indietro + if(celleSoluzione[c][r].getN() + prove < 10){ + //println("controllo fattibilità"); + errore = inserisciVal(r, c, celleSoluzione[c][r].getN() + prove); + prove ++; + }else{ + //se arrivo a provare il 9 e non va allora arretro di una cella + arretra = true; + errore = false; + celleSoluzione[c][r].setN(0); + if(c!=0){ + c -= 2; + }else{ + r --; + c = 7; + } + } + } + }else{ + //se la cella in cui ho indietreggiato contiene nove allora arretro ancroa + errore = false; + arretra = true; + celleSoluzione[c][r].setN(0); + if(c!=0){ + c -= 2; + }else{ + r --; + c = 7; + } + } + }else if (arretra){ + //se ho appena arretrato e la cella è ancora fissa aretro ancora + if(c!=0){ + c -= 2; + }else{ + r --; + c = 7; + } + } + //println("nuova cella colonna"); + Thread.sleep(0); + } + + //println("nuova cella riga"); + } + println("è stato facile"); + esecuzione = false; + + }catch(InterruptedException e) { + esecuzione = false; + } + } + } +} \ No newline at end of file diff --git a/Classe_ThTiming.pde b/Classe_ThTiming.pde new file mode 100644 index 0000000..515ef32 --- /dev/null +++ b/Classe_ThTiming.pde @@ -0,0 +1,44 @@ +public class ThTiming extends Thread { + private boolean esecuzione; + int r, c; + + public ThTiming(int r, int c) { + this.esecuzione = false; + this.r = r; + this.c = c; + } + +public void inizia(){ + this.esecuzione = true; + this.start(); +} + +boolean isEsecuzione() { + return this.esecuzione; +} + +void run () { + //salvo il colore iniziale + try { + celle[r][c].setWarningColor(color(255, 0, 0, 255)); + Thread.sleep(800); + }catch(InterruptedException e) { + esecuzione = false; + } + + while (esecuzione) { + for(int i = 0; i<=255 && esecuzione; i += 5){ + try { + Thread.sleep(20); + celle[r][c].setWarningColor(color(255, 0, 0, 255 - i)); + //println(i); + } + catch(InterruptedException e) { + esecuzione = false; + } + } + esecuzione = false; + celle[r][c].setWarningColor(color(255, 0, 0, 0)); + } + } +} \ No newline at end of file diff --git a/KeyPressed.pde b/KeyPressed.pde new file mode 100644 index 0000000..28224f5 --- /dev/null +++ b/KeyPressed.pde @@ -0,0 +1,103 @@ +void keyPressed() { + //trova keyCode + //println("CODICE: " + keyCode); + + if(keyCode == 71){ + creaCelle(); + } + + //QUANDO PREMO r o R parte il ciclo della rosoluzione del sudoku + if(keyCode == 82 || keyCode == 16){ + risolviSudoku(); + } + + //QUANDO PREMO ENTER o SPAZIO confermo il numero nella cella selezionata + if(keyCode == 10 || keyCode == 32){ + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + celle[r][c].setSelezionata(false); + UCS.setSelezionata(false); + } + } + } + + //QUANDO PREMO DEL o CANC confermo il numero nella cella selezionata + if(keyCode == 8 || keyCode == 127){ + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + if(celle[r][c].isSelezionata()) celle[r][c].setN(0); + if(celle[r][c].isSelezionata()) celle[r][c].setFissa(false); + } + } + } + + //QUANDO PREMO TAB togglo lo stato fisso della cella selezionata + if(keyCode == 9){ + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + if(celle[r][c].isSelezionata()) celle[r][c].toggleFissa(); + } + } + } + + //QUANDO PREMO ESC parte la chiusura del programma nel draw + if(keyCode == 27){ + exit(); + } + + //QUANDO PREMO FRECCIA SX 37, DX 39, SU 38, GIU 40 se la cella non è stata messa fissa + if(keyCode == 37 || keyCode == 39 || keyCode == 38 || keyCode == 40){ + //println(UCS.getR()); + //println(UCS.getC()); + + if(keyCode == 37){ //sx + if(UCS.getR() - 1>= 0){ + celle[UCS.getR()][UCS.getC()].setSelezionata(false); //deseleziono la cella selezionata attualmente + celle[UCS.getR() - 1][UCS.getC()].setSelezionata(true); + UCS.setR(UCS.getR() - 1); + } + } else if(keyCode == 39){ //dx + if(UCS.getR() + 1< 9){ + celle[UCS.getR()][UCS.getC()].setSelezionata(false); //deseleziono la cella selezionata attualmente + celle[UCS.getR() + 1][UCS.getC()].setSelezionata(true); + UCS.setR(UCS.getR() + 1); + } + } else if(keyCode == 38){ //su + if(UCS.getC() - 1>= 0){ + celle[UCS.getR()][UCS.getC()].setSelezionata(false); //deseleziono la cella selezionata attualmente + celle[UCS.getR()][UCS.getC() - 1].setSelezionata(true); + UCS.setC(UCS.getC() - 1); + } + } else if(keyCode == 40) { // giu + if(UCS.getC() + 1 < 9){ + celle[UCS.getR()][UCS.getC()].setSelezionata(false); //deseleziono la cella selezionata attualmente + celle[UCS.getR()][UCS.getC() + 1].setSelezionata(true); + UCS.setC(UCS.getC() + 1); + } + } + } + + //controllo se ho cliccato un tasto numerico, in tal caso vado a vedere r e c della cella clicata + if((keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) && (!celle[UCS.getR()][UCS.getC()].isFissa() || celle[UCS.getR()][UCS.getC()].getN() == 0)){ + int rPreSelezionata = - 1; + int cPreSelezionata = - 1; + boolean trovata = false; + + //deseleziono ogni cella, trovo se ce n era una ancora cliccata e in tal caso salvo num riga e col + for(int r = 0; r < cellePerLato && !trovata; r++){ + for(int c = 0; c < cellePerLato && !trovata; c++){ + if(celle[r][c].isSelezionata()){ + rPreSelezionata = r; + cPreSelezionata = c; + trovata = true; + } + } + } + + if(trovata){ + //controllo se premo un tasto per l inserimento di numeri, e se sono tra 0 e 9 li assegno alla cella cliccata + if(keyCode - 48 <= 9) inserisciNumero(rPreSelezionata,cPreSelezionata, keyCode - 48); + else inserisciNumero(rPreSelezionata,cPreSelezionata, keyCode - 96); + } + } +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4002995 --- /dev/null +++ b/LICENSE @@ -0,0 +1,26 @@ +# DON'T BE A DICK PUBLIC LICENSE + +> Version 1.1, December 2016 + +> Copyright (C) 2024 Rossi Stefano + +Everyone is permitted to copy and distribute verbatim or modified +copies of this license document. + +> DON'T BE A DICK PUBLIC LICENSE +> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +1. Do whatever you like with the original work, just don't be a dick. + + Being a dick includes - but is not limited to - the following instances: + + 1a. Outright copyright infringement - Don't just copy this and change the name. + 1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick. + 1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick. + +2. If you become rich through modifications, related works/services, or supporting the original work, +share the love. Only a dick would make loads off this work and not buy the original work's +creator(s) a pint. + +3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes +you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back. \ No newline at end of file diff --git a/MouseClicked.pde b/MouseClicked.pde new file mode 100644 index 0000000..ad50189 --- /dev/null +++ b/MouseClicked.pde @@ -0,0 +1,47 @@ +void mouseClicked() { + //println(mouseX); + //println(mouseY); + //println(mouseButton); + //deseleziono ogni cella, trovo se ce n era una ancora cliccata e in tal caso salvo num riga e col + if(mouseButton == 37){ //clic sinistro{ + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + if(celle[r][c].isSelezionata()){ + UCS.setR(r); + UCS.setC(c); + UCS.setSelezionata(true); + } + celle[r][c].setSelezionata(false); + } + } + + //inverto lo stato di selezionata della cella cliccata, se era già selezionata la deseleziono + int rigaSel = floor(mouseX / (lato/cellePerLato)); + int colonnaSel = floor(mouseY / (lato/cellePerLato)); + + if(rigaSel == UCS.getR() && colonnaSel == UCS.getC() && !UCS.isSelezionata()){ + celle[rigaSel][colonnaSel].setSelezionata(true); + UCS.setSelezionata(true); + //println("riseleziono"); + }else if(rigaSel == UCS.getR() && colonnaSel == UCS.getC()){ + celle[rigaSel][colonnaSel].setSelezionata(false); + UCS.setSelezionata(false); + //println("deseleziono"); + }else{ + celle[rigaSel][colonnaSel].setSelezionata(true); + UCS.setSelezionata(true); + //println("seleziono"); + } + + UCS.setR(rigaSel); + UCS.setC(colonnaSel); + } + else if (mouseButton == 39){ + //trovo la cella selezionata + int rigaSel = floor(mouseX / (lato/cellePerLato)); + int colonnaSel = floor(mouseY / (lato/cellePerLato)); + + celle[rigaSel][colonnaSel].toggleFissa(); + } + +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..910e215 --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# SudoSolver + +## Description + +A simple sudoku solver in processing 3 + +## Instructions + +- select any cell with left click, move with arrows +- pres Del to delete any cell content +- press R to solve the sudoku +- the algorithm prevent you to insert a number in a wrong cell + +Start with an empty map. + +Write some number into the map. + +![Scheme](images/main.png) + +Press R + +![Scheme](images/resolv.png) + +Good work! + +## Executables + +You can find the executables for windows and linux, arm architecture supported: [releases](https://gitlab.com/stefanorossiti/sudosolver/-/releases). + +### Executables Requirements + +- [Java 7](https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html) + +## Development Requirement + +[Processing 3.1+](https://processing.org/download/) (best) until 3.5.4 should be fine. + +## Installation and run + +Download processing 3 + +run it in the IDE + +This is a Processing 3 Project. You need the Pframe library to compile and run the code. + +- [PFrame](https://github.com/shigeodayo/PFrame) + +Extract the library in a separate folder into sketchbook libraries folder: + +- Default libraries folder: `\Documents\Processing\libraries`. If it doesn't exist, create it. + +## License + +All my work is released under [DBAD](https://www.dbad-license.org/) license diff --git a/SudoSolver.pde b/SudoSolver.pde new file mode 100644 index 0000000..88eb259 --- /dev/null +++ b/SudoSolver.pde @@ -0,0 +1,97 @@ +import g4p_controls.*; + +int lato = 450; //lato della finestra (quadrato) +int cellePerLato = 9; //quante celle ha un lato +Cella[][] celle = new Cella[cellePerLato][cellePerLato]; +Cella UCS = new Cella(0, 0, lato/cellePerLato);; // per riferimento all Ultima Cella Selezionata + +void setup() { + println(dataPath("")); + + //chiamo il metodo per il cambio di icona e del titolo + frameAndIcon("|SudoSolver| Powered by Stefano BBC Rossi",dataPath("") + "\\me.jpg"); + + size(450, 450); // Size must be the first statement + //width(displayWidth); + //height(displayHeight); + surface.setSize(width + 5, height + 5); + frameRate(30); + //frame.setResizable(true); + + //creo array bidim di celle chiamato tabella + creaCelle(); +} + +void draw() { + background(255); + //lato = width; + //frame.setSize(lato, lato); + stampaTabella(); + stampaCelle(); + stampaWarning(); + stampaNumCelle(); +} + +private void stampaWarning(){ + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + fill(celle[r][c].getWarningColor()); //rosso in strasparenza + rect(celle[r][c].getX() + 7, celle[r][c].getY() + 7, celle[r][c].getL() -9, celle[r][c].getL() - 9, 10); + } + } +} + +private void stampaNumCelle(){ + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + if(celle[r][c].getN() != 0){ + fill(celle[r][c].getColN()); + textSize(celle[r][c].getPntFontN()); + text(str(celle[r][c].getN()), celle[r][c].getX() + 21, celle[r][c].getY() + 37); + } + } + } +} + +private void stampaCelle(){ + noStroke(); + + for(int r = 0; r < cellePerLato; r++){ + for(int c = 0; c < cellePerLato; c++){ + //se la cella è fissa stampo uno sfondo più grigio + if(celle[r][c].isFissa()){ + fill(100, 0, 0, 40); //grigio + rect(celle[r][c].getX() + 3, celle[r][c].getY() + 3, celle[r][c].getL(), celle[r][c].getL()); + } + + if(celle[r][c].isSelezionata()){ + fill(celle[r][c].getColCella()); //Azzutto + rect(celle[r][c].getX() + 13, celle[r][c].getY() + 13, celle[r][c].getL() - 20, celle[r][c].getL() - 20, 8); + }else{ + noFill(); + rect(celle[r][c].getX() + 13, celle[r][c].getY() + 13, celle[r][c].getL() - 20, celle[r][c].getL() - 20, 8); + } + } + } +} + +private void stampaTabella(){ + stroke(0); + + for(int i = 0; i < 10; i++){ + for(int j = 0; j < 10; j++){ + + if (j == 0 || j == 3 || j == 6 || j == 9){ + if (i == 0 || i == 3 || i == 6 || i == 9) strokeWeight(5); + else strokeWeight(1); + } + else strokeWeight(1); + + line(0, (lato/cellePerLato) * i + 2, lato, (lato/cellePerLato) * i + 2); + + if (i == 0 || i == 3 || i == 6 || i == 9) strokeWeight(5); + else strokeWeight(1); + line((lato/cellePerLato) * i + 2, 0, (lato/cellePerLato) * i + 2, lato + 2); + } + } +} diff --git a/data/me.jpg b/data/me.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e174f8765e22ec902c30288c61d978dcd52dca9 GIT binary patch literal 31636 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

`3ix_0` zN|CR$*NB~#k!yc$5meZHul_6+Hrg*Sdt-1o@oX2-MlxX4(Y63O+y?Ql{de%k$l}l_DgmNMHB)WAZ$IxV({hpyT; zIPVCrkb$;@^NnR>&V44xY0&g~^7RAYq7?oth3XQC+@goj*mi_eqD!ZuiFS2ellUDK z*vxVKAl4K2^s3%LW*P+d(FI6SfuBb(Jsy|H2UxVY%bBl9QYKsuqFDR$1L{%5B#S!l z(%w1*$aX?5?!8|}1=RMjAa+9%5aEl8qJN^^#%#Rp_Z$-1;+RIJrXrQr3GTaFitY|$ to*}#<(@EzTe^_2j+?0XS{*Vb#OzXgayLv6Kj{)9GUP6aio}U=D{|AE5d9wfj literal 0 HcmV?d00001 diff --git a/images/main.png b/images/main.png new file mode 100644 index 0000000000000000000000000000000000000000..772ede914cc9a336c2f3b8565f9008949c84d2fd GIT binary patch literal 19006 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 QI{2rpp{t&yYI)_q0P69wWdHyG literal 0 HcmV?d00001