import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Interface extends JFrame implements MouseListener, MouseMotionListener{ private Grille g; private JButton [][] cases; private boolean [][] isActive; private int x,y,nbBombes, nbCasesActives,nbDrapeaux; public Interface(){ super("Démineur"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); int x = 10; int y = 10; int nbBombes = (x*y)/4; int nbDrapeaux = 0; init(x, y, nbBombes); this.setResizable(false); this.setVisible(true); pack(); } public void init(int x,int y,int nbBombes){ JPanel fond = new JPanel(); JPanel grille = new JPanel(); JPanel table = new JPanel(); g = new Grille(x,y,nbBombes); JLabel timer = new JLabel("0"); JLabel nbRestante= new JLabel(""+(nbBombes-nbDrapeaux)); timer.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); nbRestante.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); grille.setLayout(new GridLayout(y,x)); fond.setLayout(new BorderLayout()); table.setLayout(new GridLayout(1,3)); JMenuBar menu = new JMenuBar(); JMenu options = new JMenu("Options"); JCheckBoxMenuItem facile = new JCheckBoxMenuItem("Facile",true); JCheckBoxMenuItem normale = new JCheckBoxMenuItem("Normale",false); JCheckBoxMenuItem difficile = new JCheckBoxMenuItem("Difficile",false); JCheckBoxMenuItem perso = new JCheckBoxMenuItem("Personnalisé",false); options.add(facile); options.add(normale); options.add(difficile); options.add(perso); menu.add(options); table.add(menu); table.add(timer); table.add(nbRestante); fond.add(table, BorderLayout.NORTH); fond.add(grille, BorderLayout.SOUTH); ButtonGroup bg = new ButtonGroup(); bg.add(facile); bg.add(normale); bg.add(difficile); bg.add(perso); facile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ int x = 10; int y = 10; int nbBombes = (x*y)/6; init(x, y, nbBombes); pack(); } }); normale.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ int x = 15; int y = 15; int nbBombes = (x*y)/5; init(x, y, nbBombes); pack(); } }); difficile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ int x = 20; int y = 20; int nbBombes= (x*y)/4; init(x, y, nbBombes); pack(); } }); perso.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ int x = Integer.parseInt(JOptionPane.showInputDialog(null,"entre une valeur de X ")); int y = Integer.parseInt(JOptionPane.showInputDialog(null,"entre une valeur de Y ")); int nbBombes = Integer.parseInt(JOptionPane.showInputDialog(null,"entre le nombre de bombe souhaité")); init(x, y, nbBombes); pack(); } }); setVisible(true); nbCasesActives = x*y; isActive = new boolean [x][y]; for(int i = 0; i < isActive.length; i++){ for(int j = 0; j=cases.length){ return false; } else if(y<0 || y>=cases[0].length){ return false; } else{ return isActive[x][y]; } } public void discover(JButton jb){ if(g.getValeur(this.getX(jb),this.getY(jb)) == -1){ jb.setText("B"); if(((x*y)-nbCasesActives)==1){ JOptionPane.showMessageDialog(null,"Victime"); } else{ JOptionPane.showMessageDialog(null,"Perdu ! Vous avez cliqué sur une bombe !"); } dispose(); new Interface(); } else if(g.getValeur(this.getX(jb),this.getY(jb)) != 0){ jb.setText(""+g.getValeur(this.getX(jb),this.getY(jb))); jb.setEnabled(false); isActive[getX(jb)][getY(jb)] = false; nbCasesActives--; } else{ for(int i=getX(jb)-1;i<=getX(jb)+1;i++){ for(int j=getY(jb)-1;j<=getY(jb)+1;j++){ if(this.isEnabled(i,j)){ if(this.g.getValeur(i,j) ==0){ this.cases[i][j].setText(""); this.cases[i][j].setEnabled(false); isActive[i][j] = false; this.discover(this.cases[i][j]); nbCasesActives--; } else{ this.cases[i][j].setText(""+g.getValeur(i,j)); this.cases[i][j].setEnabled(false); isActive[i][j] = false; nbCasesActives--; } } } } } } public void mouseClicked(MouseEvent me){ JButton jb = (JButton) me.getSource(); int b = me.getButton(); if(b==MouseEvent.BUTTON1){ this.discover(jb); } else if(b==MouseEvent.BUTTON2){ System.out.println("Bouton Central"); } else{ if(nbDrapeaux != nbCasesActives){ if(jb.getText().equals(" ")){ jb.setText("D"); nbDrapeaux++; } else{ jb.setText(" "); nbDrapeaux--; } } else{ JOptionPane.showMessageDialog(null,"Bravo, vous avez trouvé toutes les bombes et gagné la partie !"); } } } public void mouseEntered(MouseEvent me){} public void mouseExited(MouseEvent me){} public void mousePressed(MouseEvent me){} public void mouseReleased(MouseEvent me){} public void mouseMoved(MouseEvent me){} public void mouseDragged(MouseEvent me){} }