Java-2(2015) 9. Hafta Swing Uygulamaları (Tic-Tac-Toe)

java2_2015_hafta9_resim1

java2_2015_hafta9_resim2

 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class oyun implements ActionListener
{
JButton[] jbtns;
JLabel jlab;
String oyunsirasi="X";
JButton jbtn_yeni;
oyun(){
JFrame jfrm = new JFrame("Oyun, Hafta-9");
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setSize(200,270);
jfrm.setLayout(new GridLayout(4,1));

jbtns= new JButton[9];
JPanel jpn= new JPanel();;
for(int sayac=0;sayac<jbtns.length;sayac++)
{
if(sayac%3==0)
{
jpn = new JPanel();
jpn.setLayout(new GridLayout(1,3));
jfrm.add(jpn);
}

JPanel jpn1 = new JPanel();
jbtns[sayac] = new JButton("?");
jbtns[sayac].setActionCommand("oyna");
jbtns[sayac].addActionListener(this);

jpn1.add(jbtns[sayac]);
jpn.add(jpn1);

}

jlab=new JLabel("Oyun sırası: "+oyunsirasi);
jbtn_yeni= new JButton("Yeniden Oyna");
jbtn_yeni.setActionCommand("yeniden");
jbtn_yeni.addActionListener(this);

JPanel jpn2= new JPanel();

jpn2.add(jlab);
jpn2.add(jbtn_yeni);
jbtn_yeni.setVisible(false);

jfrm.add(jpn2);
jfrm.setVisible(true);
}

public void actionPerformed(ActionEvent ae)
{

	if(ae.getActionCommand().equals("oyna"))
	{
		JButton jbt=(JButton) ae.getSource();
		jbt.setText(oyunsirasi);
		jbt.setEnabled(false);
		kontrol();
			
	}
	else
	{
		// yeniden oyna
		//oyunsirasi="X";
		jbtn_yeni.setVisible(false);
		for(int i=0;i<jbtns.length;i++)
		{	jbtns[i].setText("?");
			jbtns[i].setEnabled(true);
		}
		jlab.setText("Oyun sırası: "+oyunsirasi);
	}	

}

private void kontrol()
{
	String kazanan="";
	
	for(int i=0;i<3;i++)
	{
		// satir kontrol
		if(!jbtns[3*i].getText().equals("?") && jbtns[3*i].getText().equals(jbtns[3*i+1].getText()) && jbtns[3*i].getText().equals(jbtns[3*i+2].getText()))
		{
			kazanan=jbtns[3*i].getText();
			break;
		}
		
		if(!jbtns[i].getText().equals("?") && jbtns[i].getText().equals(jbtns[i+3].getText()) && jbtns[i].getText().equals(jbtns[i+6].getText()))
		{
			kazanan=jbtns[i].getText();
			break;
		}
		
		if(i==0)
		{
		 // capraz alanlar
		if(!jbtns[0].getText().equals("?") && jbtns[0].getText().equals(jbtns[4].getText()) && jbtns[0].getText().equals(jbtns[8].getText()))
		{
			kazanan=jbtns[0].getText();
			break;
		}
		
		if(!jbtns[2].getText().equals("?") && jbtns[2].getText().equals(jbtns[4].getText()) && jbtns[2].getText().equals(jbtns[6].getText()))
		{
			kazanan=jbtns[2].getText();
			break;
		}
		}
		
	}	
	
	if(kazanan.equals(""))
	{
		int durum=0;
		for(int i=0;i<jbtns.length;i++)
		{
			if(jbtns[i].getText().equals("?"))
				durum=1;
		}	
		
		if(durum==0)
		{
			jlab.setText("Oyun berabere bitti");
			jbtn_yeni.setVisible(true);
		}
		else
		{	
	
			if(oyunsirasi.equals("X"))
				oyunsirasi="O";
			else
				oyunsirasi="X";	

			jlab.setText("Oyun sırası: "+oyunsirasi);
		}
	}
	else
	{
		jlab.setText("Oyunu Kazanan:"+kazanan);
		jbtn_yeni.setVisible(true);
		for(int i=0;i<jbtns.length;i++)
			jbtns[i].setEnabled(false);
	}	
}

public static void main(String[] asda)
{
new oyun();
}

}
Share