Tic tac toe spiel Neustart

Jack1995

Mitglied
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
Java:
public class Game {

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

}

Window mit aktueller Spielmechanik
Java:
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");
			}
			
		}
		
	}

}
 
1.
Java:
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
 
Zuletzt bearbeitet von einem Moderator:
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?
 
zeig mal nen screenshot, hab kein geist, das jetzt herzuleiten, dann kann man auch was zum Layoutkonstrukt sagen.
 
also da tuts auch ein
Java:
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.
 

Neue Themen


Zurück
Oben