# Tic tac toe spiel Neustart



## Jack1995 (15. Apr 2012)

Hi ich bin ein Anfänger in Java und wollte nun mal mein erstes Tic tac toe spiel programmieren zuerst einmal für 2 Spieler.
Nun würde ich das Spiel nachdem man gewonnen hat gerne neustarten.Wie mache ich das?

Game

```
public class Game {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		new Window("Tic tac to",600,480);
	}

}
```

Window mit aktueller Spielmechanik

```
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;




public class Window extends JFrame{

	
	private String title;
	private final int breite,hoehe;
	private Dimension dim;
	private FlowLayout layout=new FlowLayout();
	private JButton[] b= new JButton[9];
	private boolean player=true;
	private int []feld ={0,0,0,0,0,0,0,0,0};
	
	
	
	public Window(String title,int breite,int hoehe)
	{
		super(title);
		this.breite=breite;
		this.hoehe=hoehe;
		this.title=title;
		dim=new Dimension(breite,hoehe);
		
	    
		
		setMaximumSize(dim);
		setMinimumSize(dim);
		setPreferredSize(dim);
		setLayout(null);

		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setResizable(false);
		setVisible(true);
		setLocationRelativeTo(null);
		
		for(int i=0;i<9;i++)
		{
			if(i<3)
			{
			b[i] = new JButton(); 
			b[i].setLocation(200+i*50,100);
			}
			else if(i<6)
			{
			b[i] = new JButton(); 
		    b[i].setLocation(i*50+50,150);
			}
			else if (i<9)
			{
			b[i] = new JButton(); 
			b[i].setLocation(i*50-100,200);
			}
			
			b[i].setSize(50,50);
			add(b[i]);
			b[i].addActionListener(new Actionhandler());
		
			
		}

		
		
	}
	
	
	private class Actionhandler implements ActionListener{

		
		public void actionPerformed(ActionEvent e) {
			
			if(e.getSource()==b[0])
			{   
				if(player)
				{
				b[0].setText("X");
				player=false;
				feld[0]=1;
				}
				else
				{b[0].setText("O");
				 player=true;
				 feld[0]=2;
				}
				b[0].setEnabled(false);
				
			}
			
			else if(e.getSource()==b[1])
			{
				if(player)
				{
				b[1].setText("X");
				player=false;
				feld[1]=1;
				}
				else
				{b[1].setText("O");
				 player=true;
				 feld[1]=2;
				}
				b[1].setEnabled(false);
				
			}
			
			else if(e.getSource()==b[2])
			{
				if(player)
				{
				b[2].setText("X");
				player=false;
				feld[2]=1;
				}
				else
				{b[2].setText("O");
				 player=true;
				 feld[2]=2;
				}
				b[2].setEnabled(false);
			}
			
			else if(e.getSource()==b[3])
			{
				if(player)
				{
				b[3].setText("X");
				player=false;
				feld[3]=1;
				}
				else
				{b[3].setText("O");
				 player=true;
				 feld[3]=2;
				}
				b[3].setEnabled(false);
				
			}
			
			else if(e.getSource()==b[4])
			{
				if(player)
				{
				b[4].setText("X");
				player=false;
				feld[4]=1;
				}
				else
				{b[4].setText("O");
				 player=true;
				 feld[4]=2;
				}
				b[4].setEnabled(false);
				
			}
			
			else if(e.getSource()==b[5])
			{
				if(player)
				{
				b[5].setText("X");
				player=false;
				feld[5]=1;
				}
				else
				{b[5].setText("O");
				 player=true;
				 feld[5]=2;
				}
				b[5].setEnabled(false);
				
			}
			
			else if(e.getSource()==b[6])
			{
				if(player)
				{
				b[6].setText("X");
				player=false;
				feld[6]=1;
				}
				else
				{b[6].setText("O");
				 player=true;
				 feld[6]=2;
				}
				b[6].setEnabled(false);
				
			}
			
			else if(e.getSource()==b[7])
			{
				if(player)
				{
				b[7].setText("X");
				player=false;
				feld[7]=1;
				}
				else
				{b[7].setText("O");
				 player=true;
				 feld[7]=2;
				}
				b[7].setEnabled(false);
			}
			
			else if(e.getSource()==b[8])
			{
				if(player)
				{
				b[8].setText("X");
				player=false;
				feld[8]=1;
				}
				else
				{b[8].setText("O");
				 player=true;
				 feld[8]=2;
				}
				b[8].setEnabled(false);
				}
			
			//Gewinnen für Spieler 1
			if(feld[0]==1&&feld[1]==1&&feld[2]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			  
			}
			else if(feld[3]==1&&feld[4]==1&&feld[5]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			}
			else if(feld[6]==1&&feld[7]==1&&feld[8]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			}
			else if(feld[0]==1&&feld[3]==1&&feld[6]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			}
			else if(feld[1]==1&&feld[4]==1&&feld[7]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			}
			else if(feld[2]==1&&feld[5]==1&&feld[8]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			}
			else if(feld[0]==1&&feld[4]==1&&feld[8]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			}
			else if(feld[6]==1&&feld[4]==1&&feld[2]==1)
			{ JOptionPane.showMessageDialog(null,"Spieler 1 hat gewonnen");
			}
			//Gewinnen für Spieler 2
			if(feld[0]==2&&feld[1]==2&&feld[2]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			else if(feld[3]==2&&feld[4]==2&&feld[5]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			else if(feld[6]==2&&feld[7]==2&&feld[8]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			else if(feld[0]==2&&feld[3]==2&&feld[6]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			else if(feld[1]==2&&feld[4]==2&&feld[7]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			else if(feld[2]==2&&feld[5]==2&&feld[8]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			else if(feld[0]==2&&feld[4]==2&&feld[8]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			else if(feld[6]==2&&feld[4]==2&&feld[2]==2)
			{ JOptionPane.showMessageDialog(null,"Spieler 2 hat gewonnen");
			}
			
		}
		
	}

}
```


----------



## vanny (15. Apr 2012)

1. 
	
	
	
	





```
Window extends JFrame
```
das ist unschön gewählt, da es im jawa.awt package eine klasse namens Window gibt.

2. schreib dir eine Methode, die den inhalt aller Fekder und Komponenten zurücksetzt und führe diese aus.

3. null-Layout is böööööse


----------



## Jack1995 (15. Apr 2012)

Zu 1. und 2. danke.
gWarum is null-Layout böse? Ich wollte halt alle tasten da platzieren wo ich will. Weil bei anderen Layout werden die ja logisch nebeneinander angeordnet. Was könntest den du mir empfehlen als Layout?


----------



## vanny (15. Apr 2012)

zeig mal nen screenshot, hab kein geist, das jetzt herzuleiten, dann kann man auch was zum Layoutkonstrukt sagen.


----------



## Jack1995 (15. Apr 2012)

Vom ausgeführten Programm?hier


----------



## vanny (15. Apr 2012)

also da tuts auch ein 
	
	
	
	





```
GridLayout gridLayout = new GridLayout(3,3);
this.setLayout(gridLayout);
```

wenn du das Grid an eine andere Position und kleiner haben möchtest nimmste halt ein subpanel und bindest es ins Layout ein.


----------

