Hallo Leute,
auch ich programmiere gerade ein "Fünf Gewinnt" Spiel. Soweit steht meine GUI und funktioniert auch. Aber ich kann meine Arrays nicht auslesen und weis nicht woran es liegt. Und solange ich das nicht hinbekomme, brauch ich mit meiner Logik nicht anfangen......
Hier mein Programm:
1. GUI
2. Listener
Ich hab schon mehrere Versuche gestartet, hat aber nie etwas gebracht.
Danke schonmal für Eure Hilfe!!
VG
Exflame
auch ich programmiere gerade ein "Fünf Gewinnt" Spiel. Soweit steht meine GUI und funktioniert auch. Aber ich kann meine Arrays nicht auslesen und weis nicht woran es liegt. Und solange ich das nicht hinbekomme, brauch ich mit meiner Logik nicht anfangen......
Hier mein Programm:
1. GUI
Java:
import javax.swing.*;
import java.awt.*;
public class FuenfGewinntGUI extends JFrame
{
private JButton btnStart; //Start-Button
private JButton btnEnde; //Ende-Button
private JPanel grid; //Spielfeld
private JLabel lblSpieler; //welcher Spieler ist dran
private JButton [][] btnSpielfeld = new JButton [10][10]; //Buttons für Spielfeld
private int i=0; //Zähler 1 für Array
private int j=0; //Zähler 2 für Array
private MyListenerFuenf myLf = new MyListenerFuenf(this);
private Container c = this.getContentPane();
public FuenfGewinntGUI()
{
super("5-Gewinnt"); //Titel auf Leiste
this.setLayout(null); //kein Layoutmanager
this.setBounds(200,50,700,650);
c=this.getContentPane();
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
btnStart = new JButton("NEU"); //Startbutton
btnStart.setBounds(570,30,100,40);
btnStart.setFont(new Font("Arial", Font.PLAIN, 20));
btnStart.addActionListener(myLf); //ActionListener
btnStart.setBackground(Color.GREEN);
this.c.add(btnStart);
btnEnde = new JButton("Ende"); //Endebutton
btnEnde.setBounds(570,100,100,40);
btnEnde.setFont(new Font("Arial", Font.PLAIN, 20));
btnEnde.addActionListener(myLf); //ActionListener
btnEnde.setBackground(Color.GREEN);
this.c.add(btnEnde);
grid = new JPanel();
grid.setBounds(30,30,500,500);
grid.setLayout(new GridLayout(10,10));
for(i=0;i<btnSpielfeld.length;i++) //Doppelschleife für Array
{
for(j=0;j<btnSpielfeld[i].length;j++)
{
btnSpielfeld [i][j] = new JButton(); //Array Buttons
grid.add(btnSpielfeld[i][j]);
btnSpielfeld[i][j].addActionListener(myLf);
}
}
this.c.add(grid);
lblSpieler = new JLabel(); //Status
lblSpieler.setBounds(170,550,300,60); //Größe und Position
lblSpieler.setFont(new Font("Arial", Font.PLAIN, 20));
this.c.add(lblSpieler);
setResizable(false);
this.setVisible(true);
}
public JLabel getLblSpieler()
{
return this.lblSpieler;
}
public JButton getBtnStart()
{
return this.btnStart;
}
public JButton getBtnEnde()
{
return this.btnEnde;
}
public void setBtnSpielfeld(int i, int j, String a)
{
this.btnSpielfeld[i][j].setFont(new Font("Arial", Font.PLAIN, 20));
this.btnSpielfeld[i][j].setText(a);
}
public JButton getBtnSpielfeld(int i, int j)
{
return this.btnSpielfeld[i][j];
}
public JButton[][] getArray()
{
return btnSpielfeld;
}
public void setLblSpieler(String b)
{
this.lblSpieler.setText(b);
}
}
2. Listener
Java:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
public class MyListenerFuenf implements ActionListener, FocusListener
{
private FuenfGewinntGUI fgg;
private int i = 0;
private int j = 0;
private int y = 0; //welcher SPieler ist am Zug?
private int z = 0; //tmp-Zähler
private int ss = 0; //Spieler s --> s-Zähler
private int ws = 0; //Spieler w --> s-Zähler
public MyListenerFuenf(FuenfGewinntGUI myLf)
{
fgg = myLf;
}
public void actionPerformed(ActionEvent e) //actionPerformed / actionEvent Abstraktemethode von Actionlistener
{
Object ob = e.getSource(); //e(!)
if (ob.equals(fgg.getBtnStart())) //Aktion bei START-Button
{
for(i = 0; i<fgg.getArray().length; i++)
{
for(j = 0; j<fgg.getArray().length; j++)
{
fgg.setBtnSpielfeld(i, j, " ");
}
}
}
if(ob.equals(fgg.getBtnEnde())) //Aktion bei ENDE-Button
{
System.exit(0);
}
for(i = 0; i<fgg.getArray().length; i++) //Schleife für Spieler (w oder s)
{
for(j = 0; j<fgg.getArray().length; j++)
{
if (ob.equals(fgg.getBtnSpielfeld(i,j)))
{
y=z%2;
if(y==0)
{
fgg.setBtnSpielfeld(i, j, "w");
}
else
{
fgg.setBtnSpielfeld(i, j, "s");
}
z++;
}
}
}
}
//-------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------
public void focusGained(FocusEvent fe)
{
}
public void focusLost(FocusEvent fe)
{
Object o = fe.getSource(); //fe(!)
}
}
Ich hab schon mehrere Versuche gestartet, hat aber nie etwas gebracht.
Danke schonmal für Eure Hilfe!!
VG
Exflame