Hi all,
I'm new to Java!
At the moment I'm trying to make a Dutch game called "Boter, Kaas, Eieren" (English: Tic Tac Toe) game in Java....
Code:public class Main {
public static void main(String[] arg) {
MyFrame mf = new MyFrame();
}
}
So far, it pretty works...Code:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyFrame extends JFrame implements ActionListener {
private JButton b1,b2,b3;
private JButton b4, b5,b6;
private JButton b7,b8,b9;
private int aantal;
private String letter;
private boolean winnen = false;
private boolean setter = false;
public MyFrame() {
JPanel spel = new JPanel();
spel.setLayout(new GridLayout(3,3));
spel.setPreferredSize(new Dimension(300, 300));
add(spel);
b1 = new JButton(""); spel.add(b1);
b1.addActionListener(this);
b2 = new JButton(""); spel.add(b2);
b2.addActionListener(this);
b3 = new JButton(""); spel.add(b3);
b3.addActionListener(this);
b4 = new JButton(""); spel.add(b4);
b4.addActionListener(this);
b5 = new JButton(""); spel.add(b5);
b5.addActionListener(this);
b6 = new JButton(""); spel.add(b6);
b6.addActionListener(this);
b7 = new JButton(""); spel.add(b7);
b7.addActionListener(this);
b8 = new JButton(""); spel.add(b8);
b8.addActionListener(this);
b9 = new JButton(""); spel.add(b9);
b9.addActionListener(this);
pack();
setTitle("Boter Kaas Eiren");
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent a) {
aantal++;
if(aantal%2==0) { letter="O"; }
else { letter="X"; }
JButton ingedrukteKnop = (JButton)a.getSource();
ingedrukteKnop.setText(letter);
ingedrukteKnop.setEnabled(false);
// Horizontaal
if(b1.getText().equals(b2.getText()) && b2.getText().equals(b3.getText()) && !b1.getText().equals("")) { winnen = true; }
else if(b4.getText().equals(b5.getText()) && b5.getText().equals(b6.getText()) && !b4.getText().equals("")) { winnen = true; }
else if(b7.getText().equals(b8.getText())&& b8.getText().equals(b9.getText()) && !b7.getText().equals("")) { winnen = true; }
// Verticaal
if(b1.getText().equals(b4.getText()) && b4.getText().equals (b7.getText()) && !b1.getText().equals("")) { winnen = true; }
else if(b2.getText().equals(b5.getText()) && b5.getText().equals( b8.getText()) && !b2.getText().equals( "")) { winnen = true; }
else if(b3.getText().equals(b6.getText())&& b6.getText().equals( b9.getText()) && !b3.getText().equals("")) { winnen = true; }
// Diagonaal
if(b1.getText().equals(b5.getText()) && b5.getText().equals (b9.getText()) && !b1.getText().equals("")) { winnen = true; }
else if(b3.getText().equals(b5.getText()) && b5.getText().equals( b7.getText()) && !b3.getText().equals("")) { winnen = true; }
else { winnen = false; }
// Result
if(aantal==9) {
if(!winnen) {
JOptionPane.showMessageDialog(null, "Draw!");
setter = true;
aantal = 0;
}
else {
JOptionPane.showMessageDialog(null, letter + " Wins!");
setter = true;
aantal = 0;
}
}
// Setter
if(setter) {
setter = false;
b1.setText("");
b1.setEnabled(true);
b2.setText("");
b2.setEnabled(true);
b3.setText("");
b3.setEnabled(true);
b4.setText("");
b4.setEnabled(true);
b5.setText("");
b5.setEnabled(true);
b6.setText("");
b6.setEnabled(true);
b7.setText("");
b7.setEnabled(true);
b8.setText("");
b8.setEnabled(true);
b9.setText("");
b9.setEnabled(true);
}
}
}
But the problem is, the Result (show draw or win, and then clear all the buttons) will only come after 9 attempts.
How can I make the Result shown directly after the person has 3 same "X" or "O" in a row? And btw is this game scripted as it should?
Any help is welcome!
Thx!

