Kare Bulmaca Oyunu indir

package Soru;
import javax.swing.*;

public class Sorular {
	public	String[] cevaplar,sorular;
	public	JLabel[] jlbsorular;
	public	int satir;
	public	int sutun;
	public void bulmaca0()
	{
		String[] soru= {"Önce Karşıtı (1-5)","Köpek (7-8)","Gözde sarıya çalan kestane rengi (10-12)","Eski yunanda konser verilen basamaklı yer (14-18)","Etken (19-22)","İnce,açık sarı renkli kamış (25-27)","Sodyumun simgesi (29-30)","Kansız (31-36)","Silisyumun simgesi (1-7)","Baston (19-31)","Bir tür ipekli kumaş (2-32)","Mısra (15-33)","Gerçek (4-22)","Telefon sözü (5-17)","Nikelin simgesi (29-35)","Avustrulya veya Yeni zelenda birliklerinin ortak adı (12-36)"};
	    String[] cvp= {"SONRA","İT","ELA","ODEON","AMİL","SAZ","NA","ANEMİK","Sİ","ASA","OTOMAN","DİZE","REEL","ALO","Nİ","ANZAK"};
	    cevaplar=cvp;
	    sorular=soru;
	    sutun=6;
	    satir=6;
	    jlbsorular=new JLabel[sorular.length];
	}
	public void bulmaca1()
	{
		String[] soru= {"Eski insanlar için 4 ayaklı Ferrari (1-2)","Mangalda bırakılmayan (4-6)","Çoğunun Aşık usandırdığı (7-9)","Olumsuz bir ek (11-12)","Büyüklüğün Şanındandır (15-16)","Sükutun geldiği yer (19-23)","Bir bağlaç (25-26)","Fizikte momenti bile olan temmbellik (31-36)","Genellikler eşyalar için kullanılsada,değişik insanlar için kullanılır (1-31)","Uzaklık anlatır (2-8)","Ta ne zaman olan Kara şimşek'te konuşan araba abinin adı(20-32)","Bir çocuğun elinde görürse bir ebeveyn 'ilerde başımıza  kumarbaz mı olacaksın' altı yüzlü denilebilen katı cisim (9-21)","Çalışır durumda olan (16-34)","Çoğu zarar azı karar;çokça insan tarafından bilinme,tanınma (5-11)","Dili tutulmuş terstende yönden de okusanız hep aynı (6-18)","Kuzu ana öğünü(30-36)"};
		String[] cvp= {"AT","KÜL","NAZ","NA","AF","İKRAR","Kİ","ATALET","ANTİKA","TA","KİT","ZAR","FAAL","ÜN","LAL","OT"};
		cevaplar=cvp;
		sorular=soru;
		sutun=6;
		satir=6;
		jlbsorular=new JLabel[sorular.length];
	}
	public void bulmaca2()
	{
		String[] soru= {"Kümeye ait varlıklardan her biri (1-6)","Açık elle yüze vurulan tokat (7-11)","Namaz vaktini bildiren çağrı (13-16)","Çekişme,Bozuşma (22-25)","Doğum yaptıran kadın (25-27)","Mağra (29-30)","Kenevir (31-36)","Elmanın yenmeyen iç kısmı (1-31)","Karadeniz Bölgesinde yaşayan halk (2-14)","Berilyumun Simgesi (26-32)","Birine geçiçi olarak bırakılan (3-33)","Engel (4-22)","Utanma (5-11)","Eyer (23-35)","Adet (18-36)"};
		String[] cvp= {"ELEMAN","ŞAMAR","EZAN","NİZA","EBE","İN","KETENE","EŞELEK","LAZ","BE","EMANET","MANİ","AR","ZİN","TANE"};
		cevaplar=cvp;
		sorular=soru;
		sutun=6;
		satir=6;
		jlbsorular=new JLabel[sorular.length];
	}
  public void bulmaca3()
  {
	  String[] soru= {"Madensel, madenle ilgili (1-7)","Alkol (8-13)","Beylik (16-21)","Anüsle ilgili (22-25)","Bir harfin okunuşu (27-28)","İnsanın ve omurgalı hayvanların çatısını oluşturan türlü biçiminde sert organların genel adı (29-33)","Öncesiz (38-42)","Göz (43-45)","Bir yağış türü (47-49)","Bir harfin okunuşu (1-8)","Bir tür sırmalı ve köstekli bıçak (22-43)","Döl eşi (2-30)","Bütün olarak, baştan sona(3-45)","Çözümleme (4-39)","Taze yumuşak ve tuzsuz beyaz peynir (5-19)","Fırında pişirilen tatlı çörek(33-47)","İncirin döllenmesi sağlayan sinek(6-27)","Lantan elementinin simgesi (41-48)","Cevizin yeşil kabuğu (21-49)"};
		String[] cvp= {"METALİK","ETANOL","EMARET","ANAL","KE","KEMİK","EZELİ","AYN","KAR","ME","AKVA","ETENE","TAMAMEN","ANALİZ","LOR","KEK","İLEK","LA","TETİR"};
		cevaplar=cvp;
		sorular=soru;
		sutun=7;
		satir=7;
		jlbsorular=new JLabel[sorular.length];
  }
  public void bulmaca4()
  {
       String[] soru= {"Açık olma (1-2)","İnce ve küçük bir nesne ile sert bir yerevurulduğunda çıkan ses (4-6)","Kertenkele derisinin sepilenmesiyle elde edilen bir deri türü (7-11)","O yer (13-15)","Kriptonun simgesi (17-18)","Kuşatma (20-24)","Uyarı (27-30)","Uğraşılan şey,meşale (31-36)","Telefon Sözü (1-13)","Lütesyum elementinin simgesi (25-31)","Asker (2-20)","Açık belli (9-33)","Tantal'ın simgesi (4-10)","Ağabey (22-34)","Aynı ırktan olanlardan her biri (5-35)","Uygun bulan,kabul eden (18-36)"};
	   String[] cvp= {"AÇ","TIK","LEZAR","ORA","KR","İHATA","İKAZ","UĞRAŞI","ALO","LU","ÇERİ","ZAHİR","TA","AKA","IRKTAŞ","RAZI"};
       cevaplar=cvp;
		sorular=soru;
		sutun=6;
		satir=6;
		jlbsorular=new JLabel[sorular.length];
  }
  public void bulmaca5()
  {
       String[] soru= {"Tatile çıkmış kimse (1-7)","Ulamak İşi (8-12)","Kuru tütün yaprağını andıran kızılımsı kahverengi, tütün rengi (15-18)","Silisyumun simgesi (20-21)","Mallar, para ile alınan şeyler (24-28)","Selin sürükleyip getirdiği kum ve toprak karışımı (29-31)","İşte (33-35)","İstanbulun bir ilçesi (36-41)","Bir harfin okunuşu (43-44)","Od (46-49)","Bir şeyin tutulup çekilecek yeri (1-43)","Karışık renkli, çok renkli, alaca (2-16)","Düşünce (30-44)","Üzerinde tanıtıcı yazı veya resim bulunan levha (3-38)","Cemaate namaz kıldıran kimse (4-25)","Lantan elementinin simgesi (39-46)","Lantan elementini simgesi (5-12)","Bir işi yerine getirmek için verilen söz (26-47)","Külte (20-48)","Yücelme (7-35)"};
	   String[] cvp= {"TATİLCİ","ULAMA","TABA","Sİ","EMVAL","MİL","AHA","ADALAR","ÇE","ATEŞ","TUTAMAÇ","ALA","İDE","TABELA","İMAM","LA","LA","VAAT","SAHRE","İTİLA"};
       cevaplar=cvp;
		sorular=soru;
		sutun=7;
		satir=7;
		jlbsorular=new JLabel[sorular.length];
  }
  public void bulmaca6()
  {
	  String[] soru= {"Barınılacak yer, melce (1-7)","Yönetme, yönetim (8-12)","Büyüme gelişme, çoğalma (15-18)","İlave (20-21)","Seyrek dokunmuş delikli bir kumaş türü (22-27)","İki atli kızak (31-35)","İtmek, vurmak (37-42)","Tende bulunan ufak koyu renkli leke (43-45)","Üzme, sıkıntı verme (47-49)","Bin sayısını üleştirme sayı sıfatı (1-29)","Sayı (2-23)","Bir harfin okunuşu (37-44)","Oruç tutulan ay (3-45)","Uzaklaşmak (4-39)","Neon Elementinin simgesi (5-12)","Yukarıdan Aşağıya doğru gelmek (26-47)","Yıkıntı, Döküntü, çöküntü (20-48)","Maden Kömürünün damıtılmasıyla elde edilen katı yakıt (7-21)","Ağabey (35-49)"};
      String[] cvp= {"BARINAK","İDARE","NEMA","EK","ETAMİN","ZANKA","KAKMAK","BEN","EZA","BİNER","ADET","KE","RAMAZAN","IRAMAK","NE","İNME","ENKAZ","KOK","AKA"};
	    cevaplar=cvp;
		sorular=soru;
		sutun=7;
		satir=7;
		jlbsorular=new JLabel[sorular.length];
  }
  public void bulmaca7()
  {
	  String[] soru= {"Dış karşıtı (1-2)","Çöl (4-8)","Hayvan çiçeği (9-11)","Başıboş hayvan (13-16)","Mezra (17-22)","Akım, ısı, ses vb'ni geçiren madde, nakil,yalıtkan karşıtı (26-32)","Bir tür yaban mersini (33-36)","Anne (38-40)","Binmeye yarayan (41-45)","Talyum elementini simgesi (47-48)","Akıllıca (49-55)","Kar fırtınalı (59-64)","Sahip (1-17)","Boyut (33-57)","Resesif (2-50)","Aslı pikrik asit olan patlayıcı bir madde (11-59)","Birinin memleketini sormak için kullanılan bir söz (20-60)","Kur'an surelerini oluşturan kısımlardan her biri (5-29)","İçi gaz, sıvı veya katı herhangi bir maddeyi alabilen oyuk nesne (45-61)","Mürekkep konulan küçük kap (6-38)"," Nikelin simgesi (54-62)","Radon elementinin simgesi (7-15)","Enteklektüel olmaya özenen ancak bunu için gerekli olan niteliği kazanmamış kimse (31-63)","Yeni bir bestecilik çığırına göre, ton ve makam temeline bağlı kalmadan oluşturulan beste (8-48)"};
      String[] cvp= {"İÇ","SAHRA","YEM","YONT","EKENEK","İLETKEN","ENİR","ANA","BİNEK","TL","AKİLANE","TİPİLİ","İYE","EBAT","ÇEKİNİK","MELİNİT","NERELİ","AYET","KAP","HOKKA","Nİ","RN","ENTEL","ATONAL"};
	    cevaplar=cvp;
		sorular=soru;
		sutun=8;
		satir=8;
		jlbsorular=new JLabel[sorular.length];
  }
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import Soru.*;
public class Calistir extends Sorular implements ActionListener,KeyListener{
    JFrame frm;
	JTextField[] jtext;
    JPanel jpnbulmaca;
    JPanel jpnsorular[],sorujpn,anajpn,jpnbtn;
    JLabel[] jlbsorular;
	JButton btn;
	String[] sayilar;
	DefaultListModel<Integer> dlm;
	int soruno;
    public Calistir()
	{   soruno=0;
    	Randomsayi();
	 	switch(sayilar[0])
        {
    	case "0":bulmaca0();bulmacaolustur();boslukbul();break;
    	case "1":bulmaca1();bulmacaolustur();boslukbul();break;
    	case "2":bulmaca2();bulmacaolustur();boslukbul();break;
    	case "3":bulmaca3();bulmacaolustur();boslukbul();break;
    	case "4":bulmaca4();bulmacaolustur();boslukbul();break;
    	case "5":bulmaca5();bulmacaolustur();boslukbul();break;
    	case "6":bulmaca6();bulmacaolustur();boslukbul();break;
    	case "7":bulmaca7();bulmacaolustur();boslukbul();break;
      }
	
	} 
    public boolean dogrumu()
    {
    	boolean durum=true;
    	boolean durum1=true;
    	for(int i=0;i<jtext.length;i++)
    	{
    		durum1=true;
    		for(int j=0;j<dlm.getSize();j++)
    		{   int bostex=dlm.getElementAt(j);
    			if(i==bostex)
    			{
    				durum1=false;
    			}
    		}
    		if(durum1&&!(jtext[i].getBackground().equals(Color.RED)))
    		   durum=false;	
    	}
   return durum; 	
    }
	public void bulmacaolustur()
	{  
         frm=new JFrame("Bulmaca");
         Toolkit tk=Toolkit.getDefaultToolkit();//Pc'nizin çözünürlüğünü bu sınıf le aliyoruz
         int pcgenislik=(int)tk.getScreenSize().getWidth();//Double döndürür
         int pcyukseklik=(int)tk.getScreenSize().getHeight();//Double döndürür
	     frm.setSize(pcgenislik,pcyukseklik);
	     frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	     frm.setLayout(new FlowLayout());
	     anajpn=new JPanel();
         anajpn.setPreferredSize(new Dimension(pcgenislik,40*satir+50));
         btn=new JButton("Doğrula");
         btn.setPreferredSize(new Dimension(100,25));
         btn.addActionListener(this);
         jpnbtn=new JPanel();
         jpnbtn.setPreferredSize(new Dimension(pcgenislik,50));
         jpnbtn.add(btn);
		 jpnbulmaca=new JPanel();
		 jpnbulmaca.setPreferredSize(new Dimension(35*satir,35*sutun));//Her bir jtextfield yükseklik=35 ve genişliği=35 dir
		 jpnbulmaca.setLayout(new GridLayout(satir,sutun));		
		 jtext=new JTextField[satir*sutun];
	   	 jlbsorular=new JLabel[sorular.length];
		 jpnsorular=new JPanel[2];
	
		for(int i=0;i<jtext.length;i++)
	    {
	    	      jtext[i]=new JTextField();
	    		  jtext[i].setHorizontalAlignment(JTextField.CENTER);
	              jtext[i].setText(i+1+"");
	              jtext[i].addKeyListener(this);
	              jtext[i].setName(i+1+"");
	    		  jpnbulmaca.add(jtext[i]); 
	    }
		anajpn.add(jpnbulmaca);
		anajpn.add(jpnbtn);
		frm.add(anajpn);
		for(int i=0;i<jlbsorular.length;i++)
		{
			jlbsorular[i]=new JLabel((i+1)+")"+sorular[i]);
			jlbsorular[i].setPreferredSize(new Dimension(600,16));
			jlbsorular[i].setHorizontalAlignment(JLabel.LEFT);
		    frm.add(jlbsorular[i]);
		}	   
		frm.setVisible(true);
	}
	//Rastgele Sayılar üretiliyor
	public void Randomsayi()
	{    Random rnd=new Random();
	     sayilar=new String[8];
	   for(int i=0;i<sayilar.length;i++)
		   sayilar[i]="";
		boolean durum=true;
		int sayac=0;
		while(sayac<8)
		{    durum=true;
			int sayi=rnd.nextInt(8);
			
			for(int i=0;i<sayilar.length;i++)
			{	
				if(sayilar[i].equals(""+sayi))
		             durum=false;  
			}
			if(durum)
				 sayilar[sayac++]=""+sayi;
		}
	}
	//Butona tıklandıktan sonra jtextlere girdiğimiz karekterler doğruysa Color(red) ve enabled(false) yapıyor
	public void dogrula()
	{    boolean durum=true;
		for(int i=0;i<sorular.length;i++)
		{    durum=true;
			 int sayac=0;//cevaplar için dongu degiskeni
			 int[] no=coz(sorular[i]);//Soruların sonlarındaki numaraları alıyoruz
		     int bas=no[0]-1;// her cevabın baslangıc 
	        int bitis=no[1]-1;// her cevabın bitşi
		   if((bitis-bas)<sutun)//yanlar kontrol ediliyor soldan sağa
		   {  
			   int esitsayisi=0;
			   for(int j=bas;j<=bitis;j++) 
			 {    
				   
				   if(jtext[j].getText().length()==0)
					   jtext[j].setText(jtext[j].getName());
				   
				   if(jtext[j].getText().length()>0)
			 {
				 if(jtext[j].getText().charAt(0)==cevaplar[i].charAt(sayac)) 
					 esitsayisi++;	
			 }
			 else
				 {
				   JOptionPane.showMessageDialog(frm, "Kutular boş olamaz ve kutuların içine bir tane karekter girilmelidir");
				  	durum=false;
				  	break;
				 }
			   sayac++;
			 }
			   if(esitsayisi==cevaplar[i].length())
				   for(int m=bas;m<=bitis;m++)
					 {
						 jtext[m].setEnabled(false);
						 jtext[m].setBackground(Color.red); 
					 }
		   }
		   else
		   {     int indis=no[0]-1;
		         int son=no[1]-1;
			     int sayac2=0;
		         int esitsayisi1=0;
			 while(son>=indis) //yukardan assaği kontrol ediliyor
		     { 
   
			   if(jtext[indis].getText().length()==0)
				          jtext[indis].setText(jtext[indis].getName());
			     
			         if(jtext[indis].getText().length()>0)
		      	 {
			    	 if(jtext[indis].getText().charAt(0)==cevaplar[i].charAt(sayac2))   
		      	          esitsayisi1++;
		      	 }
			     else
				 {
				 JOptionPane.showMessageDialog(frm, "Kutular boş olamaz ve kutuların içine tek karekter girilmelidir");
				  	durum=false;
				  	break;
				 }
			         indis+=sutun;
		     sayac2++; 	
		     }
			 indis=0;
			 indis=no[0]-1;
		          if(esitsayisi1==cevaplar[i].length())
		          { while(son>=indis)
		    	   {
		         	    jtext[indis].setBackground(Color.red);
				    	jtext[indis].setEnabled(false);
		    	     indis+=sutun;
		    	   } 	   
		          }
		          }
		  if(!durum)
			  break;
		}
	}
	@Override
	public void actionPerformed(ActionEvent arg0) {
	 	dogrula();
	 	boolean durum=dogrumu(); 
	 	if(durum==true)
	 	{    int sonuc=JOptionPane.showConfirmDialog(frm, "Yeni bir bulmacaya geçmek istiyorsanız OK 'ye tıklayın");
	 		if(sonuc==0&&soruno!=sayilar.length)
	 		{   frm.dispose();
	 			switch(sayilar[++soruno])
	    	  {
	    	    case "0":bulmaca0();bulmacaolustur();boslukbul();break;
	    	    case "1":bulmaca1();bulmacaolustur();boslukbul();break;
	    	    case "2":bulmaca2();bulmacaolustur();boslukbul();break;
	    	    case "3":bulmaca3();bulmacaolustur();boslukbul();break;
	    	    case "4":bulmaca4();bulmacaolustur();boslukbul();break;
	    	    case "5":bulmaca5();bulmacaolustur();boslukbul();break;
	    	    case "6":bulmaca6();bulmacaolustur();boslukbul();break;
	    	    case "7":bulmaca7();bulmacaolustur();boslukbul();break;
	    	  }	
	 	
	 		}
	 	}
	}
	public int[] coz(String soru)//Soruların sonlarındaki yani parentezlerin içindeki numaralrı alıyor ve int dizisine(int[]) ceviriyor ve döndürüyor
	{   
		int baslangic=0;
	    for(int i=0;i<soru.length();i++)
		if((char)soru.charAt(i)=='(')
		{
			baslangic=i;
			break;
		}
		String cvpyeri=soru.substring(baslangic+1,soru.length()-1);
		String[] soruno=cvpyeri.split("-");
	    int[] lokasyon=new int[soruno.length];
	    for(int i=0;i<soruno.length;i++)
	    {
		      lokasyon[i]=Integer.parseInt(soruno[i]);
	    }
return lokasyon;
} 	
	public static void main(String[] arg)
	{ 
		   new Calistir();
	}
	@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void keyReleased(KeyEvent arg0) {//JTextField' içine veri girişi yapıldığı an bu fonksiyon çalışıyor 
		// TODO Auto-generated method stub
		JTextField txt=(JTextField)arg0.getSource();
		if(txt.getText().length()>txt.getName().length())
		{	
			JOptionPane.showMessageDialog(frm, "Tek Karekter  girilmelidir");
		    txt.setText(txt.getName());
		}
		else
			txt.setText(txt.getText().toUpperCase());
	}
	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	public void boslukbul()//Bulmacadaki X yani bos olan yerleri buluyor X' i koyuyor ve enabled' nı false yapıyor
	{  dlm=new DefaultListModel<Integer>();
	    for(int i=0;i<satir*sutun;i++)
	    	dlm.addElement(i);
		for(int i=0;i<sorular.length;i++)
		{  
			 int sayac=0;//cevaplar için dongu degiskeni
			 int[] no=coz(sorular[i]);
		     int bas=no[0]-1;
	         int bitis=no[1]-1;
		   if((bitis-bas)<sutun)
		   {  
			   for(int j=bas;j<=bitis;j++) //yanlar kontrol ediliyor
                     for(int m=0;m<dlm.getSize();m++)
                    	 if(j==dlm.getElementAt(m))
                    		 dlm.removeElementAt(m);
		   }
		   else
		   {
			     int indis=no[0]-1;
		         int son=no[1]-1; 		        
			  while(son>=indis) //yukardan assaği kontrol ediliyor
		     { 
			   for(int m=0;m<dlm.getSize();m++)
              	 if(indis==dlm.getElementAt(m))
              		 dlm.removeElementAt(m);
		           indis+=sutun;
		     }
		}
	}
		 for(int i=0;i<dlm.getSize();i++)
		    {	
		    	jtext[dlm.getElementAt(i)].setText("X");
		        jtext[dlm.getElementAt(i)].setEnabled(false);
		    }
      }
}