OliBeerschot
Nieuwe gebruiker
- Lid geworden
- 11 mrt 2013
- Berichten
- 1
Ik ben het spelletje Boggle aan het programmeren maar ik krijg mijn letters niet op de Jbuttons.
De bedoeling is dus dat ik de methode schudbord aanroep en deze letters op afzonderlijk op Jbuttons plak.
Vervolgens moeten de buttons in een gridlayout geplaatst worden.
Hier de klasse Bordnieuw:
Hier de klasse Dobbelsteen:
De bedoeling is dus dat ik de methode schudbord aanroep en deze letters op afzonderlijk op Jbuttons plak.
Vervolgens moeten de buttons in een gridlayout geplaatst worden.
Hier de klasse Bordnieuw:
Code:
package be.test.BoggleProject.Model;
public class BordNieuw {
private int kolommen; //attribuut
private int rijen; //attribuut
public char[][] bord;
public BordNieuw() {
this.kolommen = 4;
this.rijen = 4;
bord = new char[rijen][kolommen];
}
public void schudBord(){
Dobbelsteen[] dice;
char randomBord[][] = new char[rijen][kolommen];
dice = initialiseerSteen();
int d = 0;
while (d < rijen * kolommen)
for (int i = 0; i < rijen; i++) {
for (int j = 0; j < kolommen; j++) {
randomBord[i][j] = (dice[d].getLetter());
d++;
}
}
bord = randomBord;
}
public char[][] getBord() { //getter voor bord
return bord; //bord teruggeven
}
@Override
public String toString() { //override van de toString methode
String result = ""; //attribuut result met geen inhoud
for (int i = 0; i < rijen; i++) { //for-loop
for (int j = 0; j < kolommen; j++) { //for-loop
result += String.format("%c", bord[i][j]); //de string result vullen met de waarden uit de kolommen
}
result += String.format("\n"); //als de rij vol is naar een nieuwe rij springen
}
return result; //de string result teruggeven
}
public Dobbelsteen[] initialiseerSteen() {
Dobbelsteen[] dice = new Dobbelsteen[16];
dice[0] = new Dobbelsteen('R', 'I', 'F', 'O', 'B', 'X');
dice[1] = new Dobbelsteen('I', 'F', 'E', 'H', 'E', 'Y');
dice[2] = new Dobbelsteen('D', 'E', 'N', 'O', 'W', 'S');
dice[3] = new Dobbelsteen('U', 'T', 'O', 'K', 'N', 'D');
dice[4] = new Dobbelsteen('H', 'M', 'S', 'R', 'A', 'O');
dice[5] = new Dobbelsteen('L', 'U', 'P', 'E', 'T', 'S');
dice[6] = new Dobbelsteen('A', 'C', 'I', 'T', 'O', 'A');
dice[7] = new Dobbelsteen('Y', 'L', 'G', 'K', 'U', 'E');
dice[8] = new Dobbelsteen('Q', 'B', 'M', 'J', 'O', 'A');
dice[9] = new Dobbelsteen('E', 'H', 'I', 'S', 'P', 'N');
dice[10] = new Dobbelsteen('V', 'E', 'T', 'I', 'G', 'N');
dice[11] = new Dobbelsteen('B', 'A', 'L', 'I', 'Y', 'T');
dice[12] = new Dobbelsteen('E', 'Z', 'A', 'V', 'N', 'D');
dice[13] = new Dobbelsteen('R', 'A', 'L', 'E', 'S', 'C');
dice[14] = new Dobbelsteen('U', 'W', 'I', 'L', 'R', 'G');
dice[15] = new Dobbelsteen('P', 'A', 'C', 'E', 'M', 'D');
return dice;
}
}
Hier de klasse Dobbelsteen:
Code:
package be.test.BoggleProject.Model;
import java.util.Random;
public class Dobbelsteen {
private char[] zijde;
private int gekozenzijde;
private Random random = new Random();
public Dobbelsteen(char side1, char side2, char side3,
char side4, char side5, char side6) {
zijde = new char[]{side1, side2, side3, side4, side5, side6};
toss();
}
//toon de zijde die boven ligt
public char getLetter() {
return zijde[gekozenzijde];
}
//schud de dobbelstenen
public void toss() {
gekozenzijde = random.nextInt(6);
}
}
[B]Hier mijn GUI, waarin de 16 Jbuttons aangemaakt moeten worden, en in een gridlayout moeten geplaatst worden.[/B]
package be.test.BoggleProject.Swing;
import be.test.BoggleProject.Model.*;
import javax.swing.*;
import javax.swing.event.MenuListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.*;
public class BoggleSpelSwing extends JFrame {
//Objecten
Speler deelnemer = new Speler();
Spel game = new Spel();
Woord word = new Woord();
TopScore highscore = new TopScore();
BordNieuw bord = new BordNieuw();
//Menu
private JMenuBar menuBar;
private JMenu menuSpel;
private JMenuItem itemHelp;
private JMenuItem itemInstructies;
private JMenuItem itemScore;
private JMenuItem itemExit;
//Knoppen
private JButton checkButton;
//IngevenWoord
private TextField woordje;
//letters
private ArrayList<JButton> letters;
private JButton letter;
//FeedBack
private JTextField commentaar;
//User
private JLabel userIdLabel;
private JTextField userIdField;
private JLabel userFeedBack;
private JButton startButton;
private JButton stopButon;
public BoggleSpelSwing() throws HeadlessException {
maakComponenten();
maakLayout();
voegListenersToe();
toonFrame();
}
public void maakComponenten() {
//Menu
this.menuBar = new JMenuBar();
this.menuSpel = new JMenu("Spel");
this.itemHelp = new JMenuItem("Help");
this.itemExit = new JMenuItem("Stop");
this.itemScore = new JMenuItem("Highscores");
this.itemInstructies = new JMenuItem("Instructies");
//Knoppen
this.checkButton = new JButton("Controleer woord");
//IngevenWoord
this.woordje = new TextField(25);
//Letter
this.letters = new ArrayList<JButton>(16);
this.letter = new JButton();
//Feedback
this.commentaar = new JTextField();
this.commentaar.setEditable(false);
//User
this.userIdLabel = new JLabel("Welkom bij Boggle, gelieve hier je naam in te geven.");
this.userIdField = new JTextField(20);
this.userFeedBack = new JLabel("");
this.startButton = new JButton("Start spel");
this.stopButon = new JButton("Stop");
}
public void maakLayout() {
//Menu
setJMenuBar(menuBar);
menuBar.add(menuSpel);
menuSpel.add(itemInstructies);
menuSpel.add(itemScore);
menuSpel.add(itemHelp);
menuSpel.add(itemExit);
//Knoppen + woord
JPanel check = new JPanel(new FlowLayout(FlowLayout.CENTER));
check.add(woordje);
check.add(checkButton);
this.add(check, BorderLayout.PAGE_END);
//Letters
JPanel stones = new JPanel(new GridLayout(4, 4));
stones.add(letter);
this.add(stones, BorderLayout.CENTER);
letter.setBackground(Color.blue);
//Feedback
JPanel feedBack = new JPanel(new FlowLayout(FlowLayout.CENTER));
feedBack.add(commentaar);
this.add(feedBack, BorderLayout.PAGE_START);
//User
JPanel gebruikersInfo = new JPanel(new FlowLayout(FlowLayout.CENTER));
gebruikersInfo.add(userIdLabel);
gebruikersInfo.add(userIdField);
gebruikersInfo.add(userFeedBack);
gebruikersInfo.add(startButton);
gebruikersInfo.add(stopButon);
this.add(gebruikersInfo, BorderLayout.LINE_START);
}
public void voegListenersToe() {
itemExit.addActionListener(new MenuListener());
itemInstructies.addActionListener(new MenuListener());
itemScore.addActionListener(new MenuListener());
itemHelp.addActionListener(new MenuListener());
stopButon.addActionListener(new StartListener());
checkButton.addActionListener(new CheckListener());
startButton.addActionListener(new StartListener());
}
public void toonFrame() {
setTitle("Boggle - by David Eggermont & Olivier De Smet");
setLocation(200, 200);
setVisible(true);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// inner class
private class StartListener implements ActionListener {
public void actionPerformed(ActionEvent start) {
String user = userIdField.getText();
JButton geklikt = (JButton) start.getSource();
if (geklikt == startButton) {
userFeedBack.setText("Welkom " + user + ", Boggle wordt nu gestart!");
deelnemer.setNaam(user);
startButton.setVisible(false);
bord.schudBord();
System.out.println(bord);
String result ="";
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
result += String.format("%c", bord.bord[i][j]);
}
letter.setText(result);
}
game.zetBeginTijd();
}
else {
JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "STOOOPP");
}
}
}
private class CheckListener implements ActionListener {
public void actionPerformed(ActionEvent check) {
JButton geklikt = (JButton) check.getSource();
if (geklikt == checkButton) {
while (!game.spelGedaan()) {
String woord = woordje.getText();
if (word.bevatWoord(woord)) {
commentaar.setText("Het woord staat op het bord!\n");
} else {
commentaar.setText("Fout woord!\n");
}
java.util.List<String> woordenLijst = new ArrayList<String>();
try {
Scanner input = new Scanner(new FileReader("woordenlijst.txt"));
while (input.hasNextLine()) {
woordenLijst.add(input.nextLine());
}
} catch (FileNotFoundException e) {
commentaar.setText("woordenlijst.txt niet gevonden!\n");
}
if (woordenLijst.contains(woord)) {
commentaar.setText("Het woord staat in de lijst!\n");
} else {
commentaar.setText("Het woord staat niet in de lijst!\n");
}
if (word.bevatWoord(woord) && woordenLijst.contains(woord)) {
if (game.addWoord(woord)) {
commentaar.setText("Het woord is in de lijst gezet!\n");
} else {
commentaar.setText("Het woord is al gebruikt!\n");
}
}
}
game.isSpelGedaan();
}
}
}
private class MenuListener implements ActionListener {
public void actionPerformed(ActionEvent b) {
JMenuItem geklikt = (JMenuItem) b.getSource();
if (geklikt == itemExit) {
JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "Het spelletje wordt gestopt!");
} else if (geklikt == itemInstructies) {
JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "De instructies worden nu op het scherm getoont");
} else if (geklikt == itemHelp) {
JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "HELPPPP!");
} else {
JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "Je wordt nu doorverwezen om de scores te kunnen zien");
}
}
}
private class StopListener implements ActionListener {
public void actionPerformed(ActionEvent gebeurtenis) {
JButton geklikt = (JButton) gebeurtenis.getSource();
if (geklikt == stopButon) {
game.stop();
}
}
}
}
Laatst bewerkt door een moderator: