/* * Spel.java * * Created on 8 mei 2003, 14:37 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * * @author Administrator */ public class Spel extends JApplet implements ActionListener { private JButton Button []; private int open; private int teller; private JMenuBar MenuBar; private JMenu Spel, Help; private JMenuItem Nieuw, Afsluiten, About, Hulp; private int width = 300, height = 300; /*Maken van de knoppen en GUI en mengen van de knoppen*/ public void init () { Button = new JButton [16]; for (int i = 0;i<16;i++) { Button [i]=new JButton (); } Container container = getContentPane(); container.setLayout(new GridLayout(4,4)); for (int i = 0;i<16;i++) { Button[i].addActionListener(this); Button[i].setActionCommand(String.valueOf(i)); Button[i].setText(String.valueOf(i+1)); container.add(Button[i]); } Button[15].setVisible(false); open=15; container.setBackground(Color.blue); Spel = new JMenu ("Spel"); Spel.setMnemonic('P'); Nieuw = new JMenuItem ("Nieuw spel"); Nieuw.setMnemonic('N'); Nieuw.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { mengen(); } } ); Afsluiten = new JMenuItem ("Sluiten"); Afsluiten.setMnemonic('S'); Afsluiten.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } } ); Spel.add(Nieuw); Spel.add(Afsluiten); Help = new JMenu ("Help"); Help.setMnemonic('H'); Hulp = new JMenuItem ("regels"); Hulp.setMnemonic('E'); Hulp.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(null,"De bedoeling van het spel is dat men de blokken verschuift todat deze in opklimmendde\nvolgorde liggen. (van 1 tot 15) Ook moet het open vlak in de rechter onderhoek liggen.\n\nMen kan de blokken enkel verschuiven als ze aangrenzend zijn aan het open vlak.\nOm een blok te verschuiven volstaat het om op deze blok te klikken.","Help",JOptionPane.INFORMATION_MESSAGE); } } ); About = new JMenuItem ("About"); About.setMnemonic('A'); About.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(null,"Project 3:\n\n-Dieter De Strijker\n-Joris Degroot\n-Bart Coppens\n-Jeroen Piens\n-Tom Neyt\n\nEerste jaar toegepaste informatica\nHogeschool Gent departement BEST","About",JOptionPane.INFORMATION_MESSAGE); } } ); Help.add(Hulp); Help.add(About); MenuBar = new JMenuBar(); setJMenuBar (MenuBar); MenuBar.add(Spel); MenuBar.add(Help); mengen(); } public void actionPerformed(ActionEvent actionEvent) { int plaats =(new Integer(actionEvent.getActionCommand())).intValue(); if (aangrenzend(plaats,open)) { String d; teller++; Button[plaats].setVisible(false); Button[open].setVisible(true); d=Button[plaats].getText(); Button[plaats].setText(Button[open].getText()); Button[open].setText(d); open=plaats; } if (opgelost()) { JOptionPane.showMessageDialog(null,"U heeft het spel uitgespeeld. \nU heeft "+teller+" maal een knop verschoven","Proficiat!!!",JOptionPane.INFORMATION_MESSAGE); teller=0; mengen(); } } public void mengen () { String a; int b,c; for (int i=1;i<10000;i++) { b=(int)Math.round(Math.random()*15); c=(int)Math.round(Math.random()*15); if (aangrenzend(b,c)&&(b==open || c==open)) { a=Button[b].getText(); Button[b].setText(Button[c].getText()); Button[c].setText(a); if (b==open) open=c; else open=b; } } for (int i=0;i<16;i++) { Button[i].setVisible(true); if (new Integer(Button[i].getText()).intValue()==16) { open=i; Button[i].setVisible(false); } } } public boolean aangrenzend (int a, int b) { int i; if (a>b) { i=a;a=b;b=i; } if (((Math.abs(a-b)==1)&&(a!=3)&&(b!=4)&&(a!=7)&&(b!=8)&&(a!=11)&&(b!=12))||(Math.abs(a-b)==4)) { return true; } else { return false; } } public boolean opgelost () { boolean e=true; for (int i=0;i<16;i++) if (i!=new Integer(Button[i].getText()).intValue()-1) e=false; return e; } public static void main (String args[]) { JFrame Spelletje=new JFrame("Spel"); Spelletje.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Spel applet = new Spel(); applet.init(); applet.start(); Spelletje.getContentPane().add( applet ); Spelletje.setSize( 300, 300 ); Spelletje.setVisible( true ); } }