public class FeltLytter implements MouseListener{ private Spillbrett mittSpillbrett; private Felt mittFelt; private int klikkteller=0; private AppletUI applet; public FeltLytter(Spillbrett brett, Felt felt){ this.mittSpillbrett = brett; this.mittFelt = felt; } public void mouseClicked(MouseEvent arg0) { if(!(applet.isStartspill())) { return; } // Om brikken er synlig skal den ikke vises på nytt. if(mittFelt.isVist()) { return; } // Tegner brikken. mittFelt.visFelt(); mittSpillbrett.valgtFelt(mittFelt); klikkteller++; } public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } public int getKlikkteller() { return klikkteller; } public void setKlikkteller(int klikkteller) { this.klikkteller = klikkteller; } } } import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.JApplet; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class AppletUI extends JApplet { // Deklarasjoner private JMenu filmeny, ommeny; private JMenuItem velg_spiller, nytt_spill, avslutt, highscore; private JMenuBar menybar; private JLabel spiller, bestetid, antallforsøk; private JPanel sørpanel, highscorePanel; private JTextField spillerfelt, bestetidfelt, antallforsøkfelt; private long start = 0, slutt = 0; private Spiller nyspiller; private Spillersamling spillersamling; private Spillbrett spillbrett; private String spillernavn; private Container content; private boolean startspill; // Konstruerer gui public void init() { content = getContentPane(); content.setLayout(new BorderLayout()); JPanel center = new JPanel(); spillbrett = new Spillbrett(); center.add(spillbrett); content.add(center, BorderLayout.NORTH); content.add(lagSørPanel(), BorderLayout.SOUTH); spillbrett.setEnabled(false); lagMeny(); spillersamling = new Spillersamling(); this.setSize(300, 300); this.setVisible(true); } private JPanel lagSørPanel() { /* * GridLayout 0,2 betyr at Gridlayout bruker så mange rader den trenger, * og at det blir oppretter 2 kolonner. */ sørpanel = new JPanel(new GridLayout(0, 2)); spiller = new JLabel("Spiller"); bestetid = new JLabel("Beste Tid"); antallforsøk = new JLabel("Antall Forsøk"); spillerfelt = new JTextField(10); bestetidfelt = new JTextField(10); antallforsøkfelt = new JTextField(10); // Disabler tekstfeltene spillerfelt.setEnabled(false); bestetidfelt.setEnabled(false); antallforsøkfelt.setEnabled(false); sørpanel.add(spiller); sørpanel.add(spillerfelt); sørpanel.add(bestetid); sørpanel.add(bestetidfelt); sørpanel.add(antallforsøk); sørpanel.add(antallforsøkfelt); return sørpanel; } private JMenuBar lagMeny() { menybar = new JMenuBar(); setJMenuBar(menybar); // Oppretter menyene. filmeny = new JMenu("Fil"); ommeny = new JMenu("Om"); velg_spiller = new JMenuItem("Velg Spiller"); nytt_spill = new JMenuItem("Nytt Spill"); avslutt = new JMenuItem("Avslutt"); highscore = new JMenuItem("Highscores"); /* * Settes til false siden bruker ikke skal kunne starte et nytt spill * Før han / hun har valgt en spiller. */ nytt_spill.setEnabled(false); // Legger til actionlisteners til hvert menyvalg. nytt_spill.addActionListener(new NyttspillListener()); velg_spiller.addActionListener(new VelgspillerListener()); avslutt.addActionListener(new AvsluttListener()); highscore.addActionListener(new HighscoreListener()); //Legger til menyvalgene til de respektive menyene. filmeny.add(velg_spiller); filmeny.add(nytt_spill); filmeny.add(avslutt); ommeny.add(highscore); //Legger menyene til menybaren. menybar.add(filmeny); menybar.add(ommeny); return menybar; } public boolean isStartspill() { return startspill; } public void setStartspill(boolean startspill) { this.startspill = startspill; } private class VelgspillerListener implements ActionListener { public void actionPerformed(ActionEvent e) { spillernavn = null; // Sørger for at man ikke kan legge til en tom spiller. do { spillernavn = JOptionPane.showInputDialog("Angi navn på spiller"); } while(spillernavn!=null && spillernavn.equals("")); // Avbryter metoden, spillernavn blir null når noen trykker cancel. if(spillernavn==null) return; nyspiller = spillersamling.leggTilSpiller2(spillernavn); spillerfelt.setText(nyspiller.getSpillernavn()); bestetidfelt.setText(String.valueOf(nyspiller.getTid())); antallforsøkfelt.setText(String.valueOf(nyspiller.getAntallforsøk())); nytt_spill.setEnabled(true); spillbrett.leggtilLyttere(); setStartspill(true); } } private class NyttspillListener implements ActionListener { public void actionPerformed(ActionEvent arg0) { start = System.currentTimeMillis(); repaint(); } } private class AvsluttListener implements ActionListener { public void actionPerformed(ActionEvent e) { slutt = System.currentTimeMillis(); double tidbrukt = (double) (slutt - start); tidbrukt = (tidbrukt / 1000); JOptionPane.showMessageDialog(null, "Du brukte " + tidbrukt + "Sekunder,", " Spill over", JOptionPane.INFORMATION_MESSAGE); nyspiller.setTid(tidbrukt); // Viser brukeren hvor lang tid han har brukt, og antall forsøk bestetidfelt.setText(String.valueOf(nyspiller.getTid())); antallforsøkfelt.setText(String.valueOf(nyspiller.getAntallforsøk())); // Bruker må velge et spillernavn før han får spille på nytt nytt_spill.setEnabled(false); } } private class HighscoreListener implements ActionListener { public void actionPerformed(ActionEvent e) { spillersamling.sorterSamling(); highscorePanel = new JPanel(); JTextArea poengliste = new JTextArea(20,20); List temp = spillersamling.getVector(); poengliste.setEditable(false); highscorePanel.add(poengliste); poengliste.setText("Spillernavn" + "\t" + "Tidbrukt" + "\t" + "Antall forsøk"+"\n"); // Går gjennom samlingen av spillere, og henter ut deres respektive verdier. for(int i=0; i