Jeu de carte .: brisque :. (ou mariages chez les sénégalais)

Description

Les apports du bricolage
  • Jouer aux cartes et s'amuser
  • Compter en s'amusant
  • Développer et s'entraîner aux stratégies de jeu
  • S'occuper les jours de pluie
  • Jouer sur la plage ou à la campagne


Fournitures pour jouer au jeu de brisque:
  • Un jeu de 32 cartes
  • 2 joueurs


Réalisation du jeu de brisque

Les principes du jeu
  • Le jeu de Brisque consiste à se débarrasser de toutes ses cartes en gagnant le plus de points. Certaines cartes peuvent être "mariées" pour donner plus de points. A chaque carte et paire est associé un nombre de points. Le gagnant est celui qui totalise le plus grand nombre de points.
  • La valeur des cartes seules est la suivante :

o As = 11 points
o Dix= 10 points
o Roi = 4 points
o Dame = 3 points
o Valet = 2 points
o Autres cartes = 0 point
  • Les mariages :

o Roi et dame de même couleur = 20 points
o Roi et dame d'atouts = 40 points
  • Le dernier jeu rapporte 10 points au joueur.




Le déroulement de la partie
  • Le donneur distribue aux joueurs 5 cartes, puis 2 cartes et enfin 3 cartes.
  • Le donneur retourne la carte suivante à côté du paquet pour indiquer l'atout du jeu.
  • Si un joueur détient le 7 d'atout il peut l'échanger contre la carte retournée tant que la pioche n'est pas épuisée.
  • L'adversaire du joueur joue une carte qu'il pose devant lui, puis il tire une carte dans la pioche.
  • L'autre joueur joue à son tour en posant une carte à côté de la première et tire une carte dans la pioche. Celui qui emporte le "pli" est celui qui pose la plus grosse carte de la couleur initialement demandée. Si le second joueur n'a pas de carte de la couleur demandée il peut poser n'importe quelle carte, mais il perd le "pli".
  • La partie continue jusqu'à épuisement de la pioche et des cartes de chaque joueur. Le joueur qui emporte le dernier pli remporte 10 points supplémentaires.



Le décompte des points
  • Chacun compte ses points, le gagnant est celui qui obtient le plus de points.



Source / Exemple :

/* deux version sont proposées
Vesion Txt : GameText.java
Version 2D : GameIHM.java

voir zip pour le reste */


package mariage;
/*
 * deroulement de la partie
 */

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

/**
 * @author  SOULEYMANE
 * Cette classe permet d'avoir la version graphique du Jeu 
 * 
 */
public class GameIHM extends JFrame implements ActionListener,Game {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * @param  args
	 * @uml.property  name="joueur"
	 * @uml.associationEnd  multiplicity="(0 -1)"
	 */

	//le joueur lui meme
	private PlayeurIHM playeur;
	//l'ordinateur qui est aussi un joueur
	private Ordi ordi;
   // le tapis ou se deroule le jeu
	
	private Tapis tapis = new Tapis(playeur,ordi,null);
	//la barre des menus
	private JMenuBar barreMenus ;
	//le menu fermer pour fermer la fenettre Jframe
	private JMenuItem fermer;
	/**
	 * Constructeur :
	 * on va initialiser les attributs
	 * - playeur de type Playeur qui herite de Joueur
	 * - ordi de type Ordi l'ordinatieur aussi
	 * -la pile de 32 carte
	 * -index qui represente ici le nombre de cout que vont jouer lordi et le playeur
	 * index = 16 carte on a :32 cartes en tout divisées par 2;
	 *
	 */
	public GameIHM() {
		playeur = new PlayeurIHM(new Main(),"jules",this);
		ordi = new Ordi(new Main(),"ORDI",this);
		pile = new ArrayList<Carte>();
		index =16;
        initPile();
        battreCarte();
		initAtout();
		distribuerCarte(playeur);
		distribuerCarte(ordi);
		playeur.setAvoirMain(true);
		ordi.setAvoirMain(false);
		tapis.setJoueur(playeur, ordi);
		setTitle("Mariage 1.0");
		setSize(615,660);
		getContentPane().add(tapis);
		barreMenus = new JMenuBar();
		setJMenuBar(barreMenus);
		fermer = new JMenuItem ("Fermer");
		barreMenus.add(fermer);
		fermer.addActionListener(this);
		playeur.setNom((String)JOptionPane.showInputDialog("Votre nom ??"));
		addWindowListener(new WindowAdapter() {
			// ferme la fenetre
			public void windowClosing(WindowEvent e) {
				dispose();
				System.exit(0);
			}
		}
		);
		setVisible(true);
		
	}
	/*
	 * Fermer la fenetre
	 * (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public void actionPerformed (ActionEvent ev){
	System.exit(0);
	}
	
		/**
	 * @param args
	 */
	public static void main(String[] args) {
		//on cree l'instance GameIHM 
		GameIHM g=new GameIHM();
		//on lace le jeu 
		g.run();
	}


	/**
	 * @uml.property  name="atout"
	 */
	private Carte atout;

	/**
	 * Getter of the property <tt>atout</tt>
	 * @return  Returns the atout.
	 * @uml.property  name="atout"
	 */
	public Carte getAtout() {
		return atout;
	}

	/**
	 * Setter of the property <tt>atout</tt>
	 * @param atout  The atout to set.
	 * @uml.property  name="atout"
	 */
	public void setAtout(Carte atout) {
		this.atout = atout;
	}

	/**
	 * @uml.property  name="pile"
	 */
	private List<Carte> pile;

	/**
	 * Getter of the property <tt>pile</tt>
	 * @return  Returns the pile.
	 * @uml.property  name="pile"
	 */
	public List<Carte> getPile() {
		return pile;
	}

	/**
	 * Setter of the property <tt>pile</tt>
	 * @param pile  The pile to set.
	 * @uml.property  name="pile"
	 */
	public void setPile(List<Carte> pile) {
		this.pile = pile;
	}

	/**
	 * @uml.property  name="typeCarte" readOnly="true" multiplicity="(0 -1)" dimension="1"
	 */
	private static final String[] typeCartes={"7","8","9","Valet","Dame","Roi","10","As"};

	/**
	 * Getter of the property <tt>typeCarte</tt>
	 * @return  Returns the typeCartes.
	 * @uml.property  name="typeCarte"
	 */
	public String[] getTypeCarte() {
		return typeCartes;
	}

	/**
	 * @uml.property  name="player"
	 */
	private Joueur player;

	/**
	 * Getter of the property <tt>player</tt>
	 * @return  Returns the player.
	 * @uml.property  name="player"
	 */
	public Joueur getPlayer() {
		return player;
	}

	/**
	 * Setter of the property <tt>player</tt>
	 * @param player  The player to set.
	 * @uml.property  name="player"
	 */
	public void setPlayer(Joueur player) {
		this.player = player;
	}


	/**initialisation de la pile 
	 * La valeur des cartes seules est la suivante :
    * As = 11 points
    * Dix= 10 points
    * Roi = 4 points
    * Dame = 3 points
    * Valet = 2 points
    * Autres cartes = 0 point
	 */
	public void initPile(){
		Carte[] quatreCarte = new Carte[4];
		for(int i=0 ;i<typeCartes.length;i++){
			Carte carreau = new Carte(i,Couleur.Carreau,typeCartes[i]);
			Carte coeur = new Carte(i,Couleur.Coeur,typeCartes[i]);
			Carte pique = new Carte(i,Couleur.Pique,typeCartes[i]);
			Carte trefle = new Carte(i,Couleur.Trefle,typeCartes[i]);
			quatreCarte[0]=carreau;
			quatreCarte[1]=coeur;
			quatreCarte[2]=pique;
			quatreCarte[3]=trefle;
			//10 vaut 10 points
			if (typeCartes[i]=="10"){
				for(int j=0;j<quatreCarte.length;j++){
					quatreCarte[j].setPoint(10);
				}
			}
			//As vaut 11 points
			if (typeCartes[i]=="As"){
				for(int j=0;j<quatreCarte.length;j++){
					quatreCarte[j].setPoint(11);
				}
			}
			//roi vaut 4
			if (typeCartes[i]=="Roi"){
				for(int j=0;j<quatreCarte.length;j++){
					quatreCarte[j].setPoint(4);
				}
			}
			//Dame vaut 3
			if (typeCartes[i]=="Dame"){
				for(int j=0;j<quatreCarte.length;j++){
					quatreCarte[j].setPoint(3);
				}
			}
			//valet vaut 2
			if (typeCartes[i]=="Roi"){
				for(int j=0;j<quatreCarte.length;j++){
					quatreCarte[j].setPoint(2);
				}
			}
			for(int j=0;j<quatreCarte.length;j++)
			pile.add(quatreCarte[j]);
			
		}
		//initialise la pile qui sera afficher sur le tapis
		tapis.setPile(pile);

	}


	/**
	 */
	public void initAtout(){
		Random ran = new Random();
		atout = pile.get(ran.nextInt(pile.size()));
		atout.setAtout(true);
		for(int i=0;i<pile.size();i++){
			if (pile.get(i).getCouleur().equals(atout.getCouleur()))
				pile.get(i).setAtout(true);
		}
		mettreAtoutEnFinDePile();

	}


	/**
	 */
	public void distribuerCarte(Joueur j){
		for(int i=0;i<6;i++)
			j.getMain().ajouterCarte(pile.remove(i));

	}


	/**
	 */
	public void afficherTouteLesCartes(){
		for(int i = 0;i<pile.size();i++){
			pile.get(i).afficherCarte();
			System.out.println(pile.get(i).getValeur());
		}
	}


	
	
	


	/**
	 */
	public void battreCarte(){
		Collections.shuffle(pile);

	}


	/**
	 * affiche l'atout du jeu
	 */
	public void afficherAtout(){
		System.out.print("ATOUT ==> ");
		atout.afficherCarte();


	}
	/**
	 * le joueur pioche une carte
	 * on prend la premiere carte de la pile et on l'ajoute 
	 * 
	 */
	public void piocherCarte(Joueur j){
		if (!pile.isEmpty()){
			j.getMain().ajouterCarte(getPile().remove(0));
			j.getMain().trierCarte();
		
		}
	}
	
	/**
	 * met l'atout en fin de pile
	 */
	public void mettreAtoutEnFinDePile(){
		Collections.swap(pile, pile.indexOf(atout),pile.size()-1 );
		
	}

	
	/**deroulement du jeu
	 * l'algo :
	 * initialise c1 et c2 une carte null;
	 * tant que index>0 faire 
	 *  
	 *  
	 * 
	 */
	public void run(){
		Carte c1=new Carte(0,Couleur.Carreau,"NULLCARTE");
		Carte c2=new Carte(0,Couleur.Carreau,"NULLCARTE");
		
		while(index-->0){
			System.out.print("ATOUT======>>>");
			//atout.afficherCarte();
			if (getPile().size()!=0)
				System.out.println("Nombre de carte(s) restante(s) dans la pile : "+getPile().size());
			else 
				System.out.println(" Il ya plus de carte dans la pile !! ");
			//tapis.affiche();
			tapis.affichecarter(atout);
			if(playeur.getAvoirMain()){
				Carte c = playeur.getMain().getSept();
				if ((c!=null)&&(!pile.isEmpty())){
					System.out.println(playeur.nom +" a échangé l'atout "+atout.getName()+atout.getCouleur()+" contre le 7 de" +c.getCouleur());
					JOptionPane.showMessageDialog(tapis, playeur.nom +" a échangé l'atout "+atout.getName()+atout.getCouleur()+" contre le 7 de" +c.getCouleur(), "Attention", 2);
					playeur.echangeSept();
					tapis.affichecarter(atout);
					getTapis().repaint();
				}
				c1 = playeur.jouerUnCarte(new Carte(0,Couleur.Carreau,"NULLCARTE"));
				tapis.afficheJoue(c1, 1);
				try {
					Thread.sleep(2000);
				} catch (Exception e) {
				}
				c2 = ordi.jouerUnCarte(c1);
				tapis.afficheJoue(c2, 0);
				try {
					Thread.sleep(2000);
				} catch (Exception e) {
				}
				tapis.efface();
			}
			if (ordi.avoirMain){
				Carte c = ordi.getMain().getSept();
				if ((c!=null)&&(!pile.isEmpty())){
					System.out.println(ordi.nom +" va échanger l'atout "+atout.getName()+atout.getCouleur()+" contre son 7 de" +c.getCouleur());
					JOptionPane.showMessageDialog(tapis, ordi.nom +" va échanger l'atout "+atout.getName()+atout.getCouleur()+" contre son 7 de" +c.getCouleur(), "Attention", 2);
					ordi.echangeSept();
					getTapis().repaint();
					tapis.affichecarter(atout);
				}
				try {
					Thread.sleep(1000);
				} catch (Exception e) {
				}
				c2 = ordi.jouerUnCarte(new Carte(0,Couleur.Carreau,"NULLCARTE"));
				tapis.afficheJoue(c2, 0);
				try {
					Thread.sleep(2000);
				} catch (Exception e) {
				}
				c1 = playeur.jouerUnCarte(c2);
				tapis.afficheJoue(c1, 1);
				try {
					Thread.sleep(2000);
				} catch (Exception e) {
				}
				tapis.efface();
			}
			if (c1.isSup(c2)){
				playeur.getCartesObtenues().add(c1);
				playeur.getCartesObtenues().add(c2);
				playeur.marquerPoint(c1.getPoint()+c2.getPoint());
				piocherCarte(playeur);
				piocherCarte(ordi);
				System.out.println("le joueur qui bat sur ce cout est : "+playeur.nom);
				System.out.println("c'est à "+playeur.nom+" de jouer");
				playeur.setAvoirMain(true);
				ordi.setAvoirMain(false);
				

			}else
			{
				ordi.getCartesObtenues().add(c1);
				ordi.getCartesObtenues().add(c2);
				ordi.marquerPoint(c1.getPoint()+c2.getPoint());
				piocherCarte(ordi);
				piocherCarte(playeur);
				System.out.println("le joueur qui bat sur ce cout est : "+ordi.nom);
				System.out.println("c'est à "+ordi.nom+" de jouer");
				ordi.setAvoirMain(true);
				playeur.setAvoirMain(false);
				
			}
			getTapis().repaint();
		}
		
		if (c1.isSup(c2)){
			playeur.marquerPoint(10);
		}
		else ordi.marquerPoint(10);
		
		System.out.println("++++++  PARTIE TERMINEE  +++++++");
		JOptionPane.showMessageDialog(this, "PARTIE TERMINE  :\n"+playeur.getNom()+" : "+playeur.getScore()+"\n"+ordi.getNom()+" : "+ordi.getScore(), "SCORE", 2);
		System.out.println("SCORE");
		System.out.println(playeur.getNom()+" : "+playeur.getScore());
		System.out.println(ordi.getNom()+" : "+ordi.getScore());
		if (playeur.getScore()>ordi.getScore()){
			System.out.println("le GAGNANT DE CETTE PARTIE EST : "+playeur.getNom());
			JOptionPane.showMessageDialog(this, "le GAGNANT DE CETTE PARTIE EST : "+playeur.getNom() , "bravo !!!", 2);
		}
		else if (playeur.getScore()<ordi.getScore()){
			System.out.println("le GAGNANT DE CETTE PARTIE EST : "+ordi.getNom());
			JOptionPane.showMessageDialog(this, "le GAGNANT DE CETTE PARTIE EST : "+ordi.getNom() , "bravo !!!", 2);
		}
		else {
			System.out.println("EGALITE DE SCORE !!!");
			JOptionPane.showMessageDialog(this, "EGALITE DE SCORE !!! " , "Gagant", 2);
		}
		rejouer();
		
		
	}

	public void rejouer(){
		if (JOptionPane.showConfirmDialog(tapis, "Voulez-vous rejouer ?","Rejouer",JOptionPane.YES_NO_OPTION) == 0){
	        initPile();
	        battreCarte();
			initAtout();
			distribuerCarte(playeur);
			distribuerCarte(ordi);
			tapis.setJoueur(playeur, ordi);
			setTapis(tapis);
			index=16;
			playeur.setCartesObtenues(new ArrayList<Carte>());
			ordi.setCartesObtenues(new ArrayList<Carte>());
			run();
		}
	}
	/** 
	 * @uml.property name="index"
	 */
	private int index;

	/** 
	 * Getter of the property <tt>index</tt>
	 * @return  Returns the index.
	 * @uml.property  name="index"
	 */
	public int getIndex() {
		return index;
	}

	/** 
	 * Setter of the property <tt>index</tt>
	 * @param index  The index to set.
	 * @uml.property  name="index"
	 */
	public void setIndex(int index) {
		this.index = index;
	}

	public Tapis getTapis() {
		// TODO Auto-generated method stub
		return tapis;
	}

	public void run(Joueur j, Joueur o) {
		// TODO Auto-generated method stub
		
	}

	/**
	 * @return the ordi
	 */
	public Ordi getOrdi() {
		return ordi;
	}

	/**
	 * @param ordi the ordi to set
	 */
	public void setOrdi(Ordi ordi) {
		this.ordi = ordi;
	}

	/**
	 * @return the playeur
	 */
	public PlayeurIHM getPlayeur() {
		return playeur;
	}

	/**
	 * @param playeur the playeur to set
	 */
	public void setPlayeur(PlayeurIHM playeur) {
		this.playeur = playeur;
	}

	/**
	 * @param tapis the tapis to set
	 */
	public void setTapis(Tapis tapis) {
		this.tapis = tapis;
	}




	

}

Conclusion :

il autre autre version est cours pour corriger certains bugs.

les point obtenus lors d'un Mariages (Roi Dame)ne sont pas pris en compte.

Bon jeux !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.