I
igelsalat
Gast
Hallo Leute,
Ich versuche gerade ein TicTacToe oder x-o-Spiel zu programmieren. Es ist eigentlich eine blöde Frage, aber ich schaffe es nicht, dass ich abwechselnd ein x und ein o angezeigt bekomme. Bisher habe ich entweder nur x- oder nur o-Ausgaben oder mitunter ganz lustige aber ungewollte Neuschöpfungen (ein x und der Rest o etc...).
Hat jemand die Zeit und die Lust, mir zu helfen?
Hier sind die drei Klassen, die benötigt werden:
Main-Klasse:
WindowController:
FensterMitController:
Das Problem liegt im ersten Quellcode irgendwo zwischen Zeile 63 und 73, glaube ich. Aber mit vielen anderen Schleifenkombinationen habe ich leider Gewünschtes nicht erreichen können.
Ich versuche gerade ein TicTacToe oder x-o-Spiel zu programmieren. Es ist eigentlich eine blöde Frage, aber ich schaffe es nicht, dass ich abwechselnd ein x und ein o angezeigt bekomme. Bisher habe ich entweder nur x- oder nur o-Ausgaben oder mitunter ganz lustige aber ungewollte Neuschöpfungen (ein x und der Rest o etc...).
Hat jemand die Zeit und die Lust, mir zu helfen?
Hier sind die drei Klassen, die benötigt werden:
Main-Klasse:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TicTacToe extends FensterMitController implements ActionListener
{
JButton spielfeld[][] = new JButton[3][3];
public TicTacToe()
{
initialisiereAttribute();
erzeugeMenue();
setSize(500,500);
setVisible( true );
}
private void initialisiereAttribute()
{
JPanel spielfeldPanel = new JPanel();
// Layout: drei Zeilen x drei Spalten
spielfeldPanel.setLayout( new GridLayout(3,3) );
for( int i=0; i<3; i++ )
{
for( int j=0; j<3; j++ )
{
spielfeld[i][j] = new JButton();
spielfeld[i][j].addActionListener( this );
spielfeldPanel.add( spielfeld[i][j] );
}
}
getContentPane().setLayout( new BorderLayout() );
getContentPane().add( "Center", spielfeldPanel );
}
public void actionPerformed(ActionEvent event)
{
String Kommando = event.getActionCommand();
//System.out.println( Kommando );
if( Kommando.equals( "Ende" ) )
{
System.out.println( "Ende" );
}
if( Kommando.equals( "Neues Spiel" ) )
{
System.out.println( "Neues Spiel" );
}
for( int i=0; i<3; i++ )
{
for( int j=0; j<3; j++ )
{
// Ausloeser des Events ermitteln und mit den Buttons vergleichen
if( event.getSource().equals( spielfeld[i][j] ) )
{
spielfeld[i][j].setText(("x"));
{
do
{
spielfeld[i][j].setText(("o"));
}
while (spielfeld[i][j].equals("x"));
}
}
}
}
}
void erzeugeMenue()
{
// Menuebestandteile
// neues Spiel mit Ctrl-N
JMenuItem mi_neu = new JMenuItem( "Neues Spiel" );
mi_neu.setActionCommand( "Neues Spiel" );
mi_neu.addActionListener( this );
// Ende mit Ctrl-E
JMenuItem mi_ende = new JMenuItem( "Ende" );
mi_ende.setActionCommand( "Ende" );
mi_ende.addActionListener( this );
JMenu m_spiel = new JMenu( "Spiel" );
m_spiel.add( mi_neu );
m_spiel.add( mi_ende );
JMenuBar dieMenueleiste = new JMenuBar();
dieMenueleiste.add( m_spiel );
setJMenuBar( dieMenueleiste );
}
public static void main (String args[])
{
new TicTacToe();
}
}
WindowController:
Code:
import java.awt.event.*;
public class WindowController implements WindowListener
{
FensterMitController einFenster;
public WindowController(FensterMitController fenster)
{
einFenster = fenster;
}
public void windowClosing( WindowEvent event )
{
einFenster.setVisible(false);
einFenster.dispose();
System.exit(0);
}
public void windowDeactivated(WindowEvent p1)
{
}
public void windowClosed(WindowEvent p1)
{
}
public void windowDeiconified(WindowEvent p1)
{
}
public void windowOpened(WindowEvent p1)
{
}
public void windowIconified(WindowEvent p1)
{
}
public void windowActivated(WindowEvent p1)
{
}
}
FensterMitController:
Code:
import java.awt.*;
import javax.swing.JFrame;
public class FensterMitController extends JFrame
{
private WindowController einFensterController;
public FensterMitController()
{
super();
setSize( 200,100 );
setTitle ("Fenster");
setVisible( true );
einFensterController = new WindowController( this );
addWindowListener( einFensterController );
}
}