/**
*Programme cree par The Clusters
*Fenetre des regles du jeu "Chkoba"
*@author The Clusters
*@version 1.0
**/

package chkoba;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Scanner;
import chkoba.*;

/**
*	Classe Regle
*/

public class Regle extends JFrame implements ActionListener
{	
	private JPanel pDecorateur, pGeneral, pEstAvecBouton, pEstSansBouton, pBouton, pDecorateur1, pSudBouton, pDecorateur2, pGauche, pGaucheNord;
	private JButton quitter;
	private JLabel lDecoN, lDecoS, lDecoO, lDecoE, lsommaire1, lDecoN1, lDecoS1, lDecoO1, lDecoE1, lDecoN2, lDecoS2, lDecoO2, lDecoE2;
	private List lsommaire;
	private JTextArea lregle;
	private JScrollPane sp;
		
	public Regle()
	{
		setTitle("Chkoba - Regles du jeu");
		setSize(550,350);
		setResizable(false);
		setIconImage(Toolkit.getDefaultToolkit().getImage(Regle.class.getResource("/icone.png")));
		
		/* Creation des panels */
		
		pGeneral = new JPanel();
		pDecorateur = new JPanel();
		pEstAvecBouton = new JPanel();
		pEstSansBouton = new JPanel();
		pBouton = new JPanel();
		pDecorateur1 = new JPanel();
		pSudBouton = new JPanel();
		pDecorateur2 = new JPanel();
		pGauche = new JPanel();
		pGaucheNord = new JPanel();
		
		/* Changement d'etat des panels */
		
		pDecorateur.setLayout(new BorderLayout());
		pGeneral.setLayout(new BorderLayout());
		pEstAvecBouton.setLayout(new BorderLayout());
		pEstSansBouton.setLayout(new BorderLayout());
		pBouton.setLayout(new FlowLayout());
		pDecorateur1.setLayout(new BorderLayout());
		pSudBouton.setLayout(new BorderLayout());
		pDecorateur2.setLayout(new BorderLayout());
		pGauche.setLayout(new BorderLayout());
		pGaucheNord.setLayout(new BorderLayout());
		
		/* Ajout du Panel principal */
		
		add(pDecorateur);
		pDecorateur.add(pGeneral);
		
		/* On s'occupe de la deco */
		
		lDecoN = new JLabel(" ");
		lDecoS = new JLabel(" ");
		lDecoO = new JLabel("       ");
		lDecoE = new JLabel("       ");
		
		pDecorateur.add(lDecoN, "North");
		pDecorateur.add(lDecoS, "South");
		pDecorateur.add(lDecoO, "West");
		pDecorateur.add(lDecoE, "East");
		
		lDecoN.setSize(500,100);
		lDecoS.setSize(500,100);
		lDecoO.setSize(100,300);
		lDecoE.setSize(100,300);
		
		lDecoN.setBackground(Color.LIGHT_GRAY);
		lDecoN.setOpaque(true); 			// permet de rendre le label opaque et non plus transparent
		lDecoS.setBackground(Color.LIGHT_GRAY);
		lDecoS.setOpaque(true);
		lDecoO.setBackground(Color.LIGHT_GRAY);
		lDecoO.setOpaque(true);
		lDecoE.setBackground(Color.LIGHT_GRAY);
		lDecoE.setOpaque(true);
		
		/* On s'occupe du menu qui sert du sommaire */
		
		lsommaire1 = new JLabel("   Sommaire :");
		
		lsommaire = new List();
		lsommaire.add("1) Nombre de joueurs ");
		lsommaire.add("2) Donne");
		lsommaire.add("3) Principe ");
		lsommaire.add("4) Valeurs des cartes ");
		lsommaire.add("5) Particularite ");
		lsommaire.add("6) Calcul des points ");
		lsommaire.add("7) Strategie ");
		lsommaire.add("8) Fin du jeu ");
		
		lsommaire.addActionListener(this);
		
		pGaucheNord.add(lsommaire1, "North");
		pGaucheNord.setBackground(Color.LIGHT_GRAY);
		pGauche.add(lsommaire);
		pGauche.add(pGaucheNord, "North");
		
		/* On ajoute la liste au panel de la liste */
		
		pGeneral.add(pGauche, "West");
		
		/* On s'occupe du panel des regles */
		
		/* On s'occupe de la deco des regles*/
		
		lDecoN1 = new JLabel(" ");
		lDecoS1 = new JLabel("");
		lDecoO1 = new JLabel(" ");
		lDecoE1 = new JLabel(" ");
		
		pDecorateur1.add(lDecoN1, "North");
		pDecorateur1.add(lDecoS1, "South");
		pDecorateur1.add(lDecoO1, "West");
		pDecorateur1.add(lDecoE1, "East");
		
		lDecoN1.setSize(500,10);
		lDecoS1.setSize(500,10);
		lDecoO1.setSize(100,300);
		lDecoE1.setSize(100,300);
		
		lDecoN1.setBackground(Color.LIGHT_GRAY);
		lDecoN1.setOpaque(true); 			// permet de rendre le label opaque et non plus transparent
		lDecoS1.setBackground(Color.LIGHT_GRAY);
		lDecoS1.setOpaque(true);
		lDecoO1.setBackground(Color.LIGHT_GRAY);
		lDecoO1.setOpaque(true);
		lDecoE1.setBackground(Color.LIGHT_GRAY);
		lDecoE1.setOpaque(true);
		
		/* On cree le string qui va etre ajoute au textarea */
		
		String s ="";
		
		s+="	LES RÈGLES DE LA CHKOBA\n\n";

		s+=" Prendre un jeu de 40 cartes ou a defaut un jeu de 52 cartes et retirer les 8, les 9 et les 10.\n\n"; 

		
		s+="     1) Nombre de joueurs\n\n";

		s+=" 2 ou 4. Dans une partie a 4, les joueurs assis face a face \nforment une equipe. A 2 se sont les mêmes regles.\n\n";

		
		s+="     2) Donnee\n\n";

		s+=" Distribuer 3 cartes a chaque joueur et retourner 4 cartes sur la table (MAAD). Poser le reste a côte du donneur. (chacun a son tour pour la distribution)\n\n"; 

		
		s+="     3) Principe\n\n ";

		s+=" Chaque joueur a tour de rôle (le premier est celui assis a la droite du donneur) pose une carte sur la table. Si une ou \nplusieurs cartes correspondent a la valeur de la carte qu\'il \nvient de poser, alors il prend sa carte et la ou les cartes \ncorrespondantes aux points de sa carte et les pose a cote delui face retournee. \nC\'est un pli.\n\n"; 

		
		s+="     4) Valeurs des cartes\n\n ";

		s+="Cartes/Valeur 	Roi : 10\n";
		s+="            	Valet : 9\n ";                  
		s+="              	Dame : 8\n ";
		s+="               	Sept : 7\n ";
		s+="               	Six : 6\n ";
		s+="               	Cinq : 5\n ";
		s+="               	Quatre : 4\n ";
		s+="               	Trois : 3\n ";
		s+="               	Deux : 2\n ";
		s+="               	Un : 1\n\n ";
		

		s+="     5) Particularite\n\n";

		s+=" Si un joueur pose un roi et qu\'il existe par exemple sur la \ntable, un 6 et un 4 (donc 10) et un Roi, il doit prendre le roi enpriorite. ";
		s+="Lorsque le dernier joueur a pose sa derniere carte \nen main, alors le donneur distribue a nouveau 3 cartes a \nchaque joueur, et le jeu continue jusqu\'a epuisement des \ncartes a distribuer. \n";
		s+="Si des cartes restent sur la table, alors que tous les joueurs \nn'ont plus de cartes et qu'il n'y a plus de cartes a distribuer \nalors c'est le joueur qui a fait le dernier pli qui emporte les \ncartes restantes. \n\n";

		
		s+="     6) Calcul des points \n\n";

		s+=" Lorsque la partie est terminee il faut compter les points de cette maniere:\n ";
		s+="-->1 point pour l'equipe qui a ramasse le plus de carte dans \nses plis (si egalite 20 cartes par equipe alors aucun point    n'est attribue pour cette condition) \n";
		s+="-->1 point pour l\'equipe qui a le max de carreau (DINARI) (si \negalite 5 carreaux par equipe alors 0 a 0 pour cette condition)\n";
		s+="-->1 point pour l\'equipe qui a le max de 7 (si egalite 2 sept   par equipe alors on compte les 6 si egalite 0 a 0 pour cette \ncondition) C’est la BARMILA. \n";
		s+="-->1 point pour l\'equipe qui a le 7 de carreau (la Haya)\n"; 
		s+="Point de bonus: Chkoba\n ";
		s+="-->1 point supplementaire est attribue a l'equipe qui fait \nChkoba. Chaque fois qu'un joueur vide la table grâce a la    carte qu\'il vient de poser, alors il dit chkoba. En deposant son pli dans la pile, il laisse une carte a l'endroit pour se \nsouvenir de la chkoba au moment du compte des points. \nPlusieurs chkoba sont possibles dans un même tour et \ndonneront autant de points de bonus. \n\n";
	
		
		s+="     7) Strategie \n\n";

		s+=" Il faut ramasser le 7 de carreau, le max de 7 puis de 6, le \nmax de Carreau et le max de cartes pour maximiser les \npoints.";
		s+="Si au cours de la partie, c\'est a vous de jouer et que \nsur la table il y a un cinq et que vous ne pouvez pas la \nramasser faute de cinq dans votre main, alors il faut deposerune carte qui fera un total avec le cinq superieur a 10, sinon \nle joueur derriere vous a une chance de faire chkoba si il \npossede une carte qui a une valeur entre 6 et 10.\n"; 
		s+="Avec l\'habitude vous apprendrez a memoriser les cartes passees dans le jeu.";
		s+="Avant de commencer un nouveau tour, vouspouvez melanger les cartes.\n";
		s+="Le donneur tourne a chaque partie.\n\n ";

		
		s+="     8) Fin du jeu \n\n";

		s+=" Il faut definir le nombre de points a effectuer. Le jeu s\'arrête a 11points ou 21 ou 31 pour une equipe.\n\n ";
		
		lregle = new JTextArea(s);
		lregle.setLineWrap(true);
		lregle.setEditable(false);
		sp = new JScrollPane(lregle);

		/* On ajoute le paneScroll au panel des regles */
		
		pEstSansBouton.add(sp);
		
		/* On ajoute le panel des regles au panel decorateur */
		
		pDecorateur1.add(pEstSansBouton);
		
		/* On s'occupe des boutons en bas */
		
		/* On fait la deco du bouton */
		
		lDecoN2 = new JLabel("");
		lDecoS2 = new JLabel("");
		lDecoO2 = new JLabel(" ");
		lDecoE2= new JLabel(" ");
		
		pDecorateur2.add(lDecoN2, "North");
		pDecorateur2.add(lDecoS2, "South");
		pDecorateur2.add(lDecoO2, "West");
		pDecorateur2.add(lDecoE2, "East");
		
		lDecoN2.setSize(500,10);
		lDecoS2.setSize(500,10);
		lDecoO2.setSize(100,300);
		lDecoE2.setSize(100,300);
		
		lDecoN2.setBackground(Color.LIGHT_GRAY);
		lDecoN2.setOpaque(true); 			// permet de rendre le label opaque et non plus transparent
		lDecoS2.setBackground(Color.LIGHT_GRAY);
		lDecoS2.setOpaque(true);
		lDecoO2.setBackground(Color.LIGHT_GRAY);
		lDecoO2.setOpaque(true);
		lDecoE2.setBackground(Color.LIGHT_GRAY);
		lDecoE2.setOpaque(true);
		
		quitter = new JButton("Quitter");
		quitter.addActionListener(this);
		pBouton.add(quitter);
		
		/* On ajoute les panel au panel superieur */
		
		pSudBouton.add(pBouton, "East");
		pDecorateur2.add(pSudBouton);
		pEstAvecBouton.add(pDecorateur2, "South");
				
		/* On ajoute maintenant le panel au panel est */
		
		pEstAvecBouton.add(pDecorateur1);
		
		/* On ajoute maintenant le panel est au panel general */
		
		pGeneral.add(pEstAvecBouton);
		
		setVisible(true);
	}
	
	public int recherche(String s)
	{
		return 0;
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if (e.getSource() == quitter)
			setVisible(false);
		else
		{
			JOptionPane conf = new JOptionPane();
			String s="1) Nombre de joueurs ";
			if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
			{	
				sp.getVerticalScrollBar() .setValue(75);  // 15 pixel par ligne
			}
			else
			{
				s="2) Donne";
				if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
				{	
					sp.getVerticalScrollBar() .setValue(157);  
				}
				else
				{
					s="3) Principe ";
					if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
					{	
						sp.getVerticalScrollBar() .setValue(255);
					}
					else
					{
						s="4) Valeurs des cartes ";
						if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
						{	
							sp.getVerticalScrollBar() .setValue(415);
						}
						else
						{
							s="5) Particularite ";
							if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
							{	
								sp.getVerticalScrollBar() .setValue(620);
							}
							else
							{
								s="6) Calcul des points ";
								if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
								{	
									sp.getVerticalScrollBar() .setValue(825);
								}
								else
								{
									s="7) Strategie ";
									if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
									{	
										sp.getVerticalScrollBar() .setValue(1175);
									}
									else
									{
										s="8) Fin du jeu ";
										if ((e.getSource() == lsommaire) && (lsommaire.getSelectedItem() == s))
										{	
											sp.getVerticalScrollBar() .setValue(1700);
										}
									}
								}
							}
						}	
					}
				}
			}
		}
		// utiliser startsWith(string s) quand on clique sur un element de la liste
	}
	
	public static void main(String[] args)
	{
		new Regle();
	}
}