Hallo,
als Anfänger wollte ich mir vornehmen ein Fünf Gewinnt Spiel zu programmieren.
Ich habe das Feld nun erstellt (10 x 10), sowie dass man bei 5 in einer Reihe gewinnt und dass Spieler 1 und Spieler 2 jeweils abwechselnd am Zug sind.
Soweit so gut, das Problem hiermit ist jedoch, dass das Programm die 5 in einer Reihe nicht registriert, wenn es in der unteren Hälfte des Spielfeldes geschieht.
In der oberen Hälfte ( d.h. 5x10), funktioniert alles einwandfrei.
Nun weiß ich jedoch nicht mehr weiter, da keine Syntaxfehler enstanden sind und es völlig funktionstuechtig sein muesste.
Über jegliche Hilfe wäre ich sehr erfreut und dankbar.
Konkrete Hinweise auf Fehler wären sehr hilfreich
Java:
als Anfänger wollte ich mir vornehmen ein Fünf Gewinnt Spiel zu programmieren.
Ich habe das Feld nun erstellt (10 x 10), sowie dass man bei 5 in einer Reihe gewinnt und dass Spieler 1 und Spieler 2 jeweils abwechselnd am Zug sind.
Soweit so gut, das Problem hiermit ist jedoch, dass das Programm die 5 in einer Reihe nicht registriert, wenn es in der unteren Hälfte des Spielfeldes geschieht.
In der oberen Hälfte ( d.h. 5x10), funktioniert alles einwandfrei.
Nun weiß ich jedoch nicht mehr weiter, da keine Syntaxfehler enstanden sind und es völlig funktionstuechtig sein muesste.
Über jegliche Hilfe wäre ich sehr erfreut und dankbar.
Konkrete Hinweise auf Fehler wären sehr hilfreich
Java:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.URI;
import java.awt.Desktop;
public class FünfGewinnt extends JFrame {
// Anfang Attribute
// Anfang Variablen
private JLabel jLabel1 = new JLabel();
private JButton[][] buttons = new JButton[10][10];
int[][] wert = new int[10][10];
// Ende Variablen
// Ende Attribute
public FünfGewinnt(String title) {
// Frame-Initialisierung
super(title);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 1000;
int frameHeight = 1000;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width / 2) ;
int y = (d.height - getSize().height / 2) ;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
jLabel1.setBounds(420, 16, 133, 32);
jLabel1.setText("Fünf gewinnt");
jLabel1.setFont(new Font("Arial", Font.BOLD, 19));
cp.add(jLabel1);
//Spielfeld
for (int xk = 0; xk < 10; xk++) {
for (int yk = 0; yk < 10; yk++) {
buttons[xk][yk] = new JButton("");
buttons[xk][yk].setBounds(128 + 68 * xk, 64 + 74 * yk, 67, 73);
buttons[xk][yk].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
buttonClicked(evt);
}
});
cp.add(buttons[xk][yk]);
}
}
setResizable(true);
setVisible(true);
}
public static void main(String[] args) {
new FünfGewinnt("Fünf gewinnt");
}
int total = 0;
public void buttonClicked(ActionEvent evt) {
JButton button = (JButton) evt.getSource();
button.setText(total % 2 == 0 ? "X" : "O");
button.setEnabled(false);
for (int xk = 0; xk < 10; xk++) {
for (int yk = 0; yk < 10; yk++) {
if (buttons[xk][yk] == button) {
wert[xk][yk] = 1 + total % 2;
}
}
}
winnerTest(1 + total % 2);
total++;
}
//Test auf 5 in einer Reihe
public void winnerTest(int value) {
boolean winner = false;
for(int i = 0; i < 10; i++) {
if(wert[i][0] == value && wert[i][1] == value && wert[i][2] == value && wert[i][3] == value && wert[i][4] == value) {
winner = true;
}
if(wert[0][i] == value && wert[1][i] == value && wert[2][i] == value && wert[3][i] == value && wert[4][i] == value) {
winner = true;
}
}
if(wert[0][0] == value && wert[1][1] == value && wert[2][2] == value && wert[3][3] == value && wert[4][4] == value) {
winner = true;
}
if(wert[0][4] == value && wert[1][3] == value && wert[2][2] == value && wert[3][1] == value && wert[4][0] == value) {
winner = true;
}
if (winner) {
JOptionPane.showMessageDialog(this, "Spieler" + value + " hat gewonnen!");
for (int xk = 0; xk < 10; xk++) {
for (int yk = 0; yk < 10; yk++) {
buttons[xk][yk].setText("");
buttons[xk][yk].setEnabled(true);
wert[xk][yk] = 0;
}
}
total = 0;
}
}
}
Zuletzt bearbeitet von einem Moderator: