Hi,
I'm making a Hangman program for school, the console version worked great, but now I have to put it in a GUI version. I can do all the side things (looking up highscores etc) myself, but getting the actual game in the gui version won"t work. Can anyone make this work?
It is in Dutch, but I think everything is quite clear.
Thanks,
Tycho91
import java.util.Comparator; public class Comp implements Comparator<Deelnemer> { //om de highscores te vergelijken, zodat ze gesorterd kunnen worden op score public int compare(Deelnemer d1, Deelnemer d2) { if (d2.getScore() == d1.getScore()) { return 0; } else { return d2.getScore() > d1.getScore() ? 1 : -1; } } }
public class Deelnemer { // alles over de deelnemer private long score; private String naam; public String getDeelnemer() { return String.format("%10s%10d", naam, score); } public Deelnemer(String naam, long score) { this.naam = naam; this.score = score; } public String getNaam() { return naam; } public long getScore() { return score; } public void setNaam(String naam) { this.naam = naam; } public void setScore(long score) { this.score = score; } }
public class GalgTekenen { public void MaakGalg(int fouten) { // dit maakt de galg aan de hand van het aantal fouten switch (fouten) { case 1: System.out.println(""); System.out.println("|"); System.out.println("|"); System.out.println("|"); System.out.println("|_ _"); break; case 2: System.out.println("____"); System.out.println("|"); System.out.println("|"); System.out.println("|"); System.out.println("|_ _"); break; case 3: System.out.println("____"); System.out.println("|/"); System.out.println("|"); System.out.println("|"); System.out.println("|_ _"); break; case 4: System.out.println("____"); System.out.println("|/ |"); System.out.println("|"); System.out.println("|"); System.out.println("|_ _"); break; case 5: System.out.println("____"); System.out.println("|/ |"); System.out.println("| O"); System.out.println("|"); System.out.println("|_ _"); break; case 6: System.out.println("____"); System.out.println("|/ |"); System.out.println("| O"); System.out.println("| |"); System.out.println("|_ _"); break; case 7: System.out.println("____"); System.out.println("|/ |"); System.out.println("| O"); System.out.println("| /|"); System.out.println("|_ _"); break; case 8: System.out.println("____"); System.out.println("|/ |"); System.out.println("| O"); System.out.println("| /|\\"); System.out.println("|_ _"); break; case 9: System.out.println("____"); System.out.println("|/ |"); System.out.println("| O"); System.out.println("| /|\\"); System.out.println("|_/_"); break; case 10: System.out.println("____"); System.out.println("|/ |"); System.out.println("| O"); System.out.println("| /|\\"); System.out.println("|_/_\\"); break; } } }
import javax.swing.*; public class GUI { public static void main(String[] args) { MyFrame kaderke = new MyFrame(); kaderke.setSize(500,500); kaderke.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); kaderke.setVisible(true); } }
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; public class HighScores { private static ArrayList<Deelnemer> highscores = new ArrayList<Deelnemer>(); private long score; private String naam; public HighScores(Spel spel) { naam = spel.getNaam(); score = spel.getScore(); } public static void printHighscores() { //print highscores in spel int i = 1; for (Deelnemer d : highscores) { System.out.println(i); System.out.println(d.getDeelnemer()); i++; } } public static void addDeelnemerToe(String naam, long score) { //voegt een deelnemer toe aan de highscore lijst if (!highscores.contains(new Deelnemer(naam, score))) { highscores.add(new Deelnemer(naam, score)); Collections.sort(highscores, new Comp()); } } public void schrijfHighscores() { //schrijft de highscores naar het tekst bestand try { FileWriter schrijver = new FileWriter("highscores.txt"); BufferedWriter out = new BufferedWriter(schrijver); out.write(score + "<////>" + naam); out.close(); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } } public static void wissen() { //wist de highscores highscores.clear(); } public String getNaam() { return naam; } public long getScore() { return score; } public void setNaam(String naam) { this.naam = naam; } public void setScore(long score) { this.score = score; } }
import java.io.*; import java.util.Scanner; import java.util.ArrayList; import java.util.List; public class LeesHighscores { BufferedReader in; String read; File file; public void LeesFile() { //lest de highscore file try { in = new BufferedReader(new FileReader(file)); read = in.readLine(); System.out.println(read); in.close(); } catch (IOException e) { System.out.println("Error" + e); } } public ArrayList<String> LeesHighscores() { //leest de highscore file file = new File("highscores.txt"); ArrayList<String> lijst = new ArrayList<String>(); try { Scanner scan = new Scanner(new BufferedReader(new FileReader(new File("highscores.txt")))); while(scan.hasNextLine()){ String deelnemer = scan.nextLine(); lijst.add(deelnemer); } } catch (FileNotFoundException e) { e.printStackTrace(); } return lijst; } }
import java.util.Scanner; public class Menu { public void maakKeuze() { //de keuzelijst van het menu Scanner input = new Scanner(System.in); //Woordenlijst.maakLijst(); System.out.println("Kies één van de volgende opties"); System.out.println("1. Speel"); System.out.println("2. Highscores"); System.out.println("3. Highscores wissen"); System.out.println("4. Woorden bekijken"); System.out.println("5. Woorden toevoegen"); System.out.println("6. Woorden verwijderen"); System.out.println("7. Alle woorden verwijderen"); System.out.printf("Geef de nummer van u keuze in: "); int keuze = input.nextInt(); switch (keuze) { case 1: Spelen(); break; case 2: Highscores(); break; case 3: HighscoresWissen(); break; case 4: WoordenBekijken(); break; case 5: System.out.println("Welk woord wilt u toevoegen?(Maximum 16letters)"); input.nextLine(); WoordenToevoegen(input.nextLine()); break; case 6: System.out.println("Welk woord wilt u verwijderen?"); input.nextLine(); WoordenVerwijderen(input.nextLine()); break; case 7: AlleWoordenVerwijderen(); break; default: System.out.println("Dit is geen geldige optie"); maakKeuze(); } } public void Spelen() { //voor het spel te spelen Spel spel = new Spel(); spel.start(); HighScores scores = new HighScores(spel); scores.schrijfHighscores(); } public void Highscores() { //voor de highscores te bekijken HighScores.printHighscores(); } public void HighscoresWissen() { //voor de highscores te wisen HighScores.wissen(); } public void WoordenBekijken() { //voor de woordenlijst te bekijken /* for (String woord : Woordenlijst.lijst) { System.out.println(woord); }*/ } public void WoordenToevoegen(String woord) { //om een woord toe te voegen aan de woordenlijst // Woordenlijst.voegToe(woord); } public void WoordenVerwijderen(String woord) { //om een woord in de woordenlijst te verwijderen //Woordenlijst.lijst.remove(woord); } public void AlleWoordenVerwijderen() { //om alle woorden in de woordenlijst te verwijderen // Woordenlijst.lijst.clear(); } }
/** * Created by IntelliJ IDEA. * User: Christof * Date: 17-mrt-2010 * Time: 16:15:12 * To change this template use File | Settings | File Templates. */ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; public class MyFrame extends JFrame { private JMenuBar bar; private JMenu spel; private JMenu admin; private JMenu help; private JMenuItem info; private JMenuItem spelregels; private JMenuItem galgje; private JMenuItem highscores; private JMenuItem Exit; private JMenuItem highscoresWissen; private JMenuItem woordenBekijken; private JMenuItem woordenToevoegen; private JMenuItem woordenWissen; private JMenuItem alleWoordenWissen; String cancel = ""; public MyFrame() throws HeadlessException { super("Tycho & Christof Productions - Galgje"); maakComponenten(); maakLayout(); voegListenersToe(); toonFrame(); maakEventHandlers(); } private void maakComponenten() { bar = new JMenuBar(); spel = new JMenu("spel"); galgje = new JMenuItem("Galgje"); highscores = new JMenuItem("Highscores"); woordenBekijken = new JMenuItem("Woorden bekijken"); Exit = new JMenuItem("Spel beëindigen"); admin = new JMenu("Administrator"); highscoresWissen = new JMenuItem("Highscores Wissen"); woordenToevoegen = new JMenuItem("Woorden Toevoegen"); woordenWissen = new JMenuItem("Woorden Wissen"); alleWoordenWissen = new JMenuItem("Alle woorden wissen!"); help = new JMenu("Help"); info = new JMenuItem("Info"); spelregels = new JMenuItem("Spelregels"); // Voeg items toe aan hun menu spel.add(galgje); spel.add(highscores); spel.add(woordenBekijken); spel.add(Exit); admin.add(highscoresWissen); admin.add(woordenToevoegen); admin.add(woordenWissen); admin.add(alleWoordenWissen); help.add(info); help.add(spelregels); // Voeg menu's toe aan de bar bar.add(spel); bar.add(admin); bar.add(help); } private void maakLayout() { setJMenuBar(bar); } private void voegListenersToe() { // Zorg ervoor dat bij het klikken op een button, er iets gebeurt galgje.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Spel spel = new Spel(); spel.start(); HighScores scores = new HighScores(spel); scores.schrijfHighscores(); } }); highscores.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JPanel panel = new JPanel(new GridLayout(0, 1, 5, 5)); ArrayList<String> lijst = new LeesHighscores().LeesHighscores(); for (String s : lijst) { System.out.print(s); } } }); woordenBekijken.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); highscoresWissen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); woordenToevoegen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); woordenWissen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); alleWoordenWissen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); info.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Hier komt de info, verzin maar iets"); } }); spelregels.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Hier komen de spelregels, ow yeah, spelregels voor galgje"); } }); } private void toonFrame() { setSize(300, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } private class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if (s.equals("Speel")) { System.out.println("Begin met het spel!"); } } } private void maakEventHandlers() { Exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); } }
public class SpeelSpel { public static void main(String[] args) { //dit runnen om het spel te spelen Menu menu = new Menu(); menu.maakKeuze(); } }
import javax.swing.*; import java.util.Scanner; public class Spel { private String naam; private long score; private WoordControle control; //laad de woordcontrole klasse public Spel() { GalgTekenen galg = new GalgTekenen(); control = new WoordControle(galg); } public void start() { Scanner input = new Scanner(System.in); control.kiesWoord(); //kiest een woord long time = System.currentTimeMillis(); //begint de timer //naam ingeven naam = JOptionPane.showInputDialog("Geef uw naam."); do { char letter = '_'; //tekend de streepjes String inp; do { inp= JOptionPane.showInputDialog(null,"Welke letter kies je?"); inp = inp.toUpperCase(); if (inp.length() > 0) { letter = inp.charAt(0); JOptionPane.showMessageDialog(null,"Je koos de letter" + letter); if (!control.isLetter(letter)) { JOptionPane.showMessageDialog(null,"Foutieve invoer"); } } else { JOptionPane.showMessageDialog(null,"Foutieve invoer"); } } while (!control.isLetter(letter) || inp.length() == 0); control.checkLetter(letter); } while (!control.isGedaan()); if (control.geraden()) { JOptionPane.showMessageDialog(null,"Je hebt het woord geraden!"); } else { JOptionPane.showMessageDialog(null,"Het woord was:"+ control.getWoord()); } control.getFouten(); long tijd = System.currentTimeMillis() - time; // berekend de gespeelde tijd score = 10000 - (tijd / 100) - (500 * control.getFouten()); HighScores.addDeelnemerToe(naam, score); } public String getNaam() { return naam; } public long getScore() { return score; } }
import java.util.Random; public class WoordControle { private String woord; private String raad; private int fouten = 0; private GalgTekenen galg; private String geradenChars = ""; public WoordControle(GalgTekenen galg) { this.galg = galg; } public void kiesWoord() { //kiest een woord Random random = new Random(); Woordenlijst woorden = new Woordenlijst(); woord = woorden.getWoord(2 /*random.nextInt(woorden.getSize())*/); woord = woord.toUpperCase(); raad = ""; do { raad += "_"; } while (raad.length() != woord.length()); } public boolean isLetter(char letter) { return ((int) letter > 64 && (int) letter < 91); } public void checkLetter(char letter) { //controleerd de ingegeven letters boolean reedsGeraden = false; if (geradenChars.length() > 0) { if (geradenChars.indexOf(letter) >= 0) { reedsGeraden = true; } } if (reedsGeraden) { //controleerd of de letter al niet gekozen is System.out.println("Je hebt deze letters reeds gekozen: "); System.out.println(geradenChars); } else { geradenChars += letter; String vorige = raad; char[] geraden = raad.toCharArray(); for (int i = 0; i < woord.length(); i += 1) { if (woord.charAt(i) == letter) { geraden[i] = letter; } } raad = new String(geraden); if (raad.equals(vorige)) { fouten += 1; } galg.MaakGalg(fouten); System.out.println(raad); } } public boolean geraden() { //of het geraden is return raad.equals(woord); } public boolean isGedaan() { return ((raad.equals(woord)) || (fouten == 10)); } public String getWoord() { return woord; } public int getFouten() { return fouten; } }
import java.util.ArrayList; import java.util.Scanner; import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; public class Woordenlijst { ArrayList<String> lijst; public Woordenlijst() { maakLijst(); } public void maakLijst() { // dit leest de lijst in voor het spelen lijst = new ArrayList<String>(); try { String bestandsnaam = "woordenlijst\\woordenlijst_2009.txt"; FileReader file = new FileReader(bestandsnaam); Scanner scanner = new Scanner(new BufferedReader(file)); while (scanner.hasNextLine()) { lijst.add(scanner.nextLine()); } } catch (IOException e) { System.out.println("Probleem bij het lezen van de woordenlijst."); //voor als er een probleem is } } public ArrayList<String> getLijst(){ return lijst; } public int getSize() { //kijkt hoeveel letters het woord is return lijst.size(); } public void voegToe(String woord) { //voor een woord toe te voegen aan de lijst lijst.add(woord); } public String getWoord(int index) { //voor een woord te zoeken return lijst.get(index); } }