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<temp.size();i++) {
Spiller hypertemp = (Spiller) spillersamling.getVector().get(i);
poengliste.append(hypertemp.getSpillernavn() + "\t" + String.valueOf(hypertemp.getTid() + "\t" + String.valueOf(hypertemp.getAntallforsøk() +"\n")));
}
// Lager JFrame for visning av Highscoreliste
JFrame highscorevindu = new JFrame();
highscorevindu.setLayout(new BorderLayout());
highscorevindu.add(highscorePanel,BorderLayout.CENTER);
highscorevindu.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
highscorevindu.setSize(300,200);
highscorevindu.setVisible(true);
}
}
}