import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.util.*;

import javax.swing.*;
import javax.swing.border.TitledBorder;

public class Kelime5 { 
	
	public static JFrame frame;
	
	//olculer ve koordinatlar
	public static int panelGenislik = 80;
	public static int panelYukseklik = 80;
	public static int panelArasi = 10;
	public static int panelSaydamYukseklik = panelYukseklik+(panelArasi*2);
	public static int panelX = panelArasi;
	public static int panelY = panelArasi;
	
	public static int frameGenislik = (7*panelGenislik)+(10*panelArasi);
	public static int frameYukseklik = (6*panelSaydamYukseklik)+(7*panelArasi)+35;
	
	public static JPanel panelSaydam;
	
	public static String tutulanKelime = kelimeBes();
	
	public static String kullaniciTahmini = "•••••";
	
	public static JPanel besHarfliPanel(int panelNo, String tahmin) {
		
		Color panelSaydamBG = new Color(213,226,242);
		Color harfPanelBG = new Color(108,125,140); //GRI BASLANGIÇ KUTU RENGI
		Color harfPanelBG_GRI = new Color(108,125,140);
		Color harfPanelBG_TURKUAZ = new Color(143,203,217);
		Color harfPanelBG_YESIL = new Color(82,191,4);
		Color harfPanelBG_KIRMIZI = new Color(242,12,31);
		Color harfPanelBG_SARI = new Color(242,226,5);
		Color harfPanelBG_MAVI = new Color(82,181,242);
		
		panelSaydam = new JPanel();
		panelSaydam.setLayout(null);
		
		//paneller		
		JPanel panel0 = new JPanel();
		JPanel panel1 = new JPanel();
		JPanel panel2 = new JPanel();
		JPanel panel3 = new JPanel();
		JPanel panel4 = new JPanel();
		JPanel panel5 = new JPanel(); // tahmin paneli
		JPanel panel6 = new JPanel(); // sonuc paneli
		
		//harf labellar
		JLabel harf0 = new JLabel();
		JLabel harf1 = new JLabel(); 
		JLabel harf2 = new JLabel();
		JLabel harf3 = new JLabel();
		JLabel harf4 = new JLabel();
		
		int sonuc = 0;
		JLabel sonucLabel = new JLabel("");
		
		Font harfFont = new Font("Ubuntu", Font.BOLD,40); // fonts.google.com
		
		String kelime = tahmin;
		
		if(panelNo == 0) {
			 
			kelime = tutulanKelime;
			
		}
		
		String kelime0 = kelime.substring(0,1).toUpperCase();
		String kelime1 = kelime.substring(1,2).toUpperCase();
		String kelime2 = kelime.substring(2,3).toUpperCase();
		String kelime3 = kelime.substring(3,4).toUpperCase();
		String kelime4 = kelime.substring(4,5).toUpperCase();
		
		String tutulanKelime0 = tutulanKelime.substring(0,1);
		String tutulanKelime1 = tutulanKelime.substring(1,2);
		String tutulanKelime2 = tutulanKelime.substring(2,3);
		String tutulanKelime3 = tutulanKelime.substring(3,4);
		String tutulanKelime4 = tutulanKelime.substring(4,5);

		if(panelNo == 0) {
						
			panelSaydam.setBackground(panelSaydamBG);
			panelSaydam.setBounds(panelArasi, panelArasi, frameGenislik-(panelArasi*2), panelSaydamYukseklik);
			
		} else {
			
			if(panelNo == 1) { //birinci harf paneli
				panelX = panelArasi;
				
				panel5.add(tahminPaneli(panelNo));
				
				panelSaydam.setBackground(panelSaydamBG);
				panelSaydam.setBounds(panelArasi,(panelArasi*(panelNo+1))+(panelSaydamYukseklik*panelNo), frameGenislik-(panelArasi*2), panelSaydamYukseklik);
				
			} else if(panelNo == 2) { //ikinci harf paneli
				panelX = panelArasi;
				
				panel5.add(tahminPaneli(panelNo));

				panelSaydam.setBackground(panelSaydamBG);
				panelSaydam.setBounds(panelArasi,(panelArasi*(panelNo+1))+(panelSaydamYukseklik*panelNo), frameGenislik-(panelArasi*2), panelSaydamYukseklik);
			
			} else if(panelNo == 3) { //üçüncü harf paneli
				panelX = panelArasi;
				
				panel5.add(tahminPaneli(panelNo));

				panelSaydam.setBackground(panelSaydamBG);
				panelSaydam.setBounds(panelArasi,(panelArasi*(panelNo+1))+(panelSaydamYukseklik*panelNo), frameGenislik-(panelArasi*2), panelSaydamYukseklik);
			
			} else if(panelNo == 4) { //dördüncü harf paneli
				panelX = panelArasi;
				
				panel5.add(tahminPaneli(panelNo));

				panelSaydam.setBackground(panelSaydamBG);
				panelSaydam.setBounds(panelArasi,(panelArasi*(panelNo+1))+(panelSaydamYukseklik*panelNo), frameGenislik-(panelArasi*2), panelSaydamYukseklik);
			
			} else if(panelNo == 5) { //beşinci harf paneli
				panelX = panelArasi;
				
				panel5.add(tahminPaneli(panelNo));

				panelSaydam.setBackground(panelSaydamBG);
				panelSaydam.setBounds(panelArasi,(panelArasi*(panelNo+1))+(panelSaydamYukseklik*panelNo), frameGenislik-(panelArasi*2), panelSaydamYukseklik);
			}
			
		}
		
		//harflerin ozelliklerini ekliyoruz
		harf0.setText(kelime0);
		harf0.setFont(harfFont);
		harf0.setHorizontalAlignment(JLabel.CENTER);
		harf0.setBounds(0,0,panelGenislik, panelYukseklik);	
		
		harf1.setText(kelime1);
		harf1.setFont(harfFont);
		harf1.setHorizontalAlignment(JLabel.CENTER);
		harf1.setBounds(0,0,panelGenislik, panelYukseklik);
		
		harf2.setText(kelime2);
		harf2.setFont(harfFont);
		harf2.setHorizontalAlignment(JLabel.CENTER);
		harf2.setBounds(0,0,panelGenislik, panelYukseklik);
		
		harf3.setText(kelime3);
		harf3.setFont(harfFont);
		harf3.setHorizontalAlignment(JLabel.CENTER);
		harf3.setBounds(0,0,panelGenislik, panelYukseklik);
		
		harf4.setText(kelime4);
		harf4.setFont(harfFont);
		harf4.setHorizontalAlignment(JLabel.CENTER);
		harf4.setBounds(0,0,panelGenislik, panelYukseklik);
		
		//harfleri panellere ekliyoruz
		panel0.add(harf0);
		panel1.add(harf1);
		panel2.add(harf2);
		panel3.add(harf3);
		panel4.add(harf4);
		
		if(tahmin.equals("baslangic")) {
			
			harfPanelBG = harfPanelBG_GRI;
			
			harf0.setText("•");
			
		}else if(kelime0.equals("•")) {
			
			harfPanelBG = harfPanelBG_TURKUAZ;

			
		} else if(kelime0.equals(tutulanKelime0)){
			
			harfPanelBG = harfPanelBG_YESIL;
			
			sonuc++;
			
		}else{
			
			harfPanelBG = harfPanelBG_KIRMIZI;
			
		}
		
		panel0.setLayout(null);
		panel0.setBackground(harfPanelBG);
		panel0.setBorder(new TitledBorder("1. HARF"));
		panel0.setBounds(panelX, panelY, panelGenislik, panelYukseklik);
		
		panelX = panelX + panelArasi + panelGenislik;
		
		if(tahmin.equals("baslangic")) {
			
			harfPanelBG = harfPanelBG_GRI;
			
			harf1.setText("•");
						
		}else if(kelime1.equals("•")) {
			
			harfPanelBG = harfPanelBG_TURKUAZ;

			
		} else if(kelime1.equals(tutulanKelime1)){
			
			harfPanelBG = harfPanelBG_YESIL;
			
			sonuc++;
			
		}else{
			
			harfPanelBG = harfPanelBG_KIRMIZI;
			
		}

		panel1.setLayout(null);
		panel1.setBackground(harfPanelBG);
		panel1.setBorder(new TitledBorder("2. HARF"));
		panel1.setBounds(panelX, panelY, panelGenislik, panelYukseklik);
		
		panelX = panelX + panelArasi + panelGenislik;
		
		if(tahmin.equals("baslangic")) {
			
			harfPanelBG = harfPanelBG_GRI;
			
			harf2.setText("•");
			
		}else if(kelime2.equals("•")) {
			
			harfPanelBG = harfPanelBG_TURKUAZ;

			
		} else if(kelime2.equals(tutulanKelime2)){
			
			harfPanelBG = harfPanelBG_YESIL;
			
			sonuc++;
			
		}else{
			
			harfPanelBG = harfPanelBG_KIRMIZI;
			
		}

		panel2.setLayout(null);
		panel2.setBackground(harfPanelBG);
		panel2.setBorder(new TitledBorder("3. HARF"));
		panel2.setBounds(panelX, panelY, panelGenislik, panelYukseklik);
		
		panelX = panelX + panelArasi + panelGenislik;
		
		if(tahmin.equals("baslangic")) {
			
			harfPanelBG = harfPanelBG_GRI;
			
			harf3.setText("•");
			
		}else if(kelime3.equals("•")) {
			
			harfPanelBG = harfPanelBG_TURKUAZ;

			
		} else if(kelime3.equals(tutulanKelime3)){
			
			harfPanelBG = harfPanelBG_YESIL;
			
			sonuc++;
			
		}else{
			
			harfPanelBG = harfPanelBG_KIRMIZI;
			
		}

		panel3.setLayout(null);
		panel3.setBackground(harfPanelBG);
		panel3.setBorder(new TitledBorder("4. HARF"));
		panel3.setBounds(panelX, panelY, panelGenislik, panelYukseklik);
		
		panelX = panelX + panelArasi + panelGenislik;
		
		if(tahmin.equals("baslangic")) {
			
			harfPanelBG = harfPanelBG_GRI;
			
			harf4.setText("•");
			
		}else if(kelime4.equals("•")) {
			
			harfPanelBG = harfPanelBG_TURKUAZ;

			
		} else if(kelime4.equals(tutulanKelime4)){
			
			harfPanelBG = harfPanelBG_YESIL;
			
			sonuc++;
			
		}else{
			
			harfPanelBG = harfPanelBG_KIRMIZI;
			
		}

		panel4.setLayout(null);
		panel4.setBackground(harfPanelBG);
		panel4.setBorder(new TitledBorder("5. HARF"));
		panel4.setBounds(panelX, panelY, panelGenislik, panelYukseklik);
		
		panelX = panelX + panelArasi + panelGenislik;
		
		//tahmin paneli

		panel5.setLayout(null);
		panel5.setBackground(harfPanelBG_MAVI);
		panel5.setBorder(new TitledBorder("TAHMIN"));
		panel5.setBounds(panelX, panelY, panelGenislik, panelYukseklik);
		
		panelX = panelX + panelArasi + panelGenislik;
		
		//sonuc paneli
		
		sonucLabel.setText(sonuc + "/5");
		sonucLabel.setFont(harfFont);
		sonucLabel.setHorizontalAlignment(JLabel.CENTER);
		sonucLabel.setBounds(0,0,panelGenislik, panelYukseklik);
		
		panel6.add(sonucLabel);
		
		panel6.setLayout(null);
		panel6.setBackground(harfPanelBG_SARI);
		panel6.setBorder(new TitledBorder("SONUC"));
		panel6.setBounds(panelX, panelY, panelGenislik, panelYukseklik);
		
		panelX = panelArasi;
		
		panelSaydam.add(panel0);
		panelSaydam.add(panel1);
		panelSaydam.add(panel2);
		panelSaydam.add(panel3);
		panelSaydam.add(panel4);
		panelSaydam.add(panel5);
		panelSaydam.add(panel6);
		
		return panelSaydam;
	}
	
	public static JPanel tahminPaneli(int tahminNo) {
		
		JPanel panel = new JPanel();
		
		panel.setLayout(null);
		panel.setBorder(new TitledBorder("TAHMIN"));
		panel.setBackground(new Color(82,181,242)); //mavi renk ekliyoruz
		panel.setBounds(0,0, panelGenislik, panelYukseklik);
		
		JLabel labelTahmin = new JLabel();
		labelTahmin.setText(tahminNo+"/5. Tahmin");
		labelTahmin.setBounds(5,10,70,20);
		
		JTextField field = new JTextField();
		field.setBounds(5,30,70,20);
		
		JButton buton = new JButton("Goster");
		buton.setBounds(5,50,70,20);
		
		buton.addActionListener(new ActionListener() {
			   public void actionPerformed(ActionEvent event) {
			    
			    
			    kullaniciTahmini = field.getText().toUpperCase();
			   
			    if (kullaniciTahmini.equals(tutulanKelime)) {
			    
			     frame.add(besHarfliPanel(0,kullaniciTahmini));
			     panelSaydam.repaint();
			     			     
				 frame.add(besHarfliPanel(tahminNo,kullaniciTahmini));
			     panelSaydam.repaint();
			     
			     

			    } else if(tahminNo == 5) {
			    	
			    	 frame.add(besHarfliPanel(0,kullaniciTahmini));
				     panelSaydam.repaint();
				     			     
					 frame.add(besHarfliPanel(tahminNo,kullaniciTahmini));
				     panelSaydam.repaint();
			    	
				    

			    }
			    		    
			    frame.add(besHarfliPanel(tahminNo,kullaniciTahmini));
			    
			    panelSaydam.repaint();
			
			   }
			   
		});
		
		panel.add(labelTahmin);
		panel.add(field);
		panel.add(buton);
		
		return panel;
				
		
	}
	
	public Kelime5() {
		
		Color frameBG = new Color(59,78,89);
		
		System.out.println(tutulanKelime);  // Test amaçli kelimeyi consome'da gormek için
		
		frame = new JFrame("Kelime5");

		frame.setLayout(null);
		
		frame.add(besHarfliPanel(0,"baslangic"));
						
		frame.add(besHarfliPanel(1,kullaniciTahmini));
		frame.add(besHarfliPanel(2,kullaniciTahmini));
		frame.add(besHarfliPanel(3,kullaniciTahmini));
		frame.add(besHarfliPanel(4,kullaniciTahmini));
		frame.add(besHarfliPanel(5,kullaniciTahmini));
		
		frame.getContentPane().setBackground(frameBG);
		frame.setSize(frameGenislik, frameYukseklik);
		frame.setResizable(false);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		
	}

	public static  String kelimeBes() {
		
		String[] kelimeBes = new String[38];
		
		kelimeBes[0] = "Radyo"; 
		kelimeBes[1] = "Kağıt"; 
		kelimeBes[2] = "Sehpa"; 
		kelimeBes[3] = "Dolap"; 
		kelimeBes[4] = "Kalem"; 		
		kelimeBes[5] = "Bıçak";		
		kelimeBes[6] = "Tablo";		
		kelimeBes[7] = "Tepsi"; 
		kelimeBes[8] = "Efsun"; 
		kelimeBes[9] = "Hitap"; 
		kelimeBes[10] = "Kelam"; 
		kelimeBes[11] = "Kanıt"; 
		kelimeBes[12] = "Batıl"; 		
		kelimeBes[13] = "Doğru"; 
		kelimeBes[14] = "Defin";
		kelimeBes[15] = "Kabir";
		kelimeBes[16] = "Gömüt"; 
		kelimeBes[17] = "Mezar";
		kelimeBes[18] = "Bahçe"; 
		kelimeBes[19] = "Merak"; 
		kelimeBes[20] = "Antre"; 
		kelimeBes[21] = "Salon"; 
		kelimeBes[22] = "Kiler"; 
		kelimeBes[23] = "Banyo"; 
		kelimeBes[24] = "Beton"; 
		kelimeBes[25] = "Doruk"; 
		kelimeBes[26] = "Dahil"; 
		kelimeBes[27] = "Davul"; 
		kelimeBes[28] = "Sahra"; 
		kelimeBes[29] = "Diğer";
		kelimeBes[30] = "Öteki"; 	
		kelimeBes[31] = "Yarın"; 
		kelimeBes[32] = "Bugün"; 		
		kelimeBes[33] = "Sonra"; 
		kelimeBes[34] = "Kayıt"; 
		kelimeBes[35] = "Satır";
		kelimeBes[36] = "Mısra";
		kelimeBes[37] = "Roman";     
		
		Random r = new Random();	
		
		int k = r.nextInt(38);
		
		kelimeBes[k] = kelimeBes[k].toUpperCase();
			
			return kelimeBes[k];		
	}
	
	
}






