package projet; import javax.swing.*; import java.awt.*; import java.awt.geom.Rectangle2D; /** Cette classe réalise l'affichage de grilles de sudoku stockées dans des tableaux bidimensionnels d'entiers. * Le 1er indice du tableau doit désigner le numéro de ligne, et le 2ème le numéro de colonne. * Les 0 ne sont pas affichés et représentent une case vide. * Pour afficher un tableau t, il suffit de créer une fenêtre d'affichage par new AffichageSudoku(t, grille, i) où * t est le tableau contenant les valeurs initiales et celles ajoutées par le joueur (humain ou programme) * grille est le tableau initial (contenant des 0 partout sauf là où il existe des valeurs initiales) * i est le temps d'attente entre chaque action, en millisecondes * Pour rafraichir simplement l'affichage avec les valeurs d'un tableau t, il faut utiliser refresh(t) */ public class AffichageSudoku extends JFrame{ private int[][] t; private int[][] grille; private Graphic p; private int border = 20; private int attente; public AffichageSudoku(int[][] t, int[][] grille, int attente){ super("SUDOKU"); this.t = t; this.grille = grille; this.attente = attente; this.p = new Graphic(); this.getContentPane().add(this.p); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(new Dimension(500,500)); this.setLocation((java.awt.Toolkit.getDefaultToolkit().getScreenSize().width-500)/2,(java.awt.Toolkit.getDefaultToolkit().getScreenSize().height-500)/2); this.setVisible(true); } public void refresh(int[][] t){ this.t = t; this.repaint(); try{ Thread.sleep(attente); } catch(InterruptedException e){ System.out.println("interruption"); } } public void afficheGagne(){ JOptionPane.showMessageDialog(this,"Une solution a été trouvée!"); } public void affichePasDeSolution(){ JOptionPane.showMessageDialog(this,"Pas de solution possible dans cette grille"); } private class Graphic extends JPanel{ public void paint(Graphics g){ int w = this.getWidth(); int h = this.getHeight(); g.setColor(Color.WHITE); g.fillRect(0,0,w,h); g.setColor(Color.BLACK); for(int i = 0;i