import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Spill { static int M = 5, N = 7; static JButton[][] knapper = new JButton[M][N]; static boolean[][] spillbrett = new boolean[M][N]; static JLabel harVunnet; public static void main(String[] args){ JFrame vindu = new JFrame("Flipp-spill"); vindu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel basis = new JPanel(); JPanel rutenett = new JPanel(); rutenett.setLayout(new GridLayout(M,N)); for (int i = 0; i < M; i++){ for (int j = 0; j < N; j++){ JButton knapp = new JButton("a"); knapp.addActionListener(new Trykkbehandler(i, j)); knapp.setOpaque(true); knapp.setBorderPainted(false); knapper[i][j] = knapp; rutenett.add(knapp); } } JButton shuffleKnapp = new JButton(); shuffleKnapp.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub shuffle(); oppdater(); } }); harVunnet = new JLabel("Du har ikke vunnet"); shuffle(); oppdater(); basis.add(harVunnet); basis.add(shuffleKnapp); basis.add(rutenett); vindu.add(basis); vindu.setVisible(true); vindu.pack(); } static class Trykkbehandler implements ActionListener{ int i, j; public Trykkbehandler(int i, int j){ this.i = i; this.j = j; } @Override public void actionPerformed(ActionEvent e){ System.out.println("trykket ("+i + " "+j+")"); flip(i, j); oppdater(); } } static void flip(int i,int j){ for (int stegi = i-1; stegi < i+2; stegi++){ for (int stegj = j-1; stegj < j+2; stegj++){ try { spillbrett[stegi][stegj] = !spillbrett[stegi][stegj]; } catch (IndexOutOfBoundsException e) { //TODO: handle exception } } } } static void oppdater(){ for (int i = 0; i < M; i++){ for (int j = 0; j < N; j++){ if (spillbrett[i][j]) knapper[i][j].setBackground(Color.GREEN); else knapper[i][j].setBackground(Color.RED); } } if (sjekk()){ harVunnet.setText("Du har vunnet"); } else{ harVunnet.setText("Du har ikke vunnet"); } } static void shuffle(){ for (int teller = 0; teller<1; teller++ ){ double rj = Math.random()*N; double ri = Math.random()*M; flip((int)ri,(int)rj); } } static boolean sjekk(){ System.out.println("Hei på deg"); boolean første = spillbrett[0][0]; for (int i = 0; i < M; i++){ for (int j = 0; j < N; j++){ System.out.println(spillbrett); if (spillbrett[i][j] != første) return false; } } return true; } }