private MainPoker ConstructeurMainPoker(string nomJoueur, CartePoker carte1, CartePoker carte2, CartePoker[] board) { return(new MainPoker(new Joueur(nomJoueur) { Carte1 = carte1, Carte2 = carte2 }, board)); }
private MainPoker ConstructeurMainPoker(CartePoker carte1, CartePoker carte2, CartePoker carte3, CartePoker carte4, CartePoker carte5, CartePoker carte6, CartePoker carte7) { return(new MainPoker(new Joueur("Joueur") { Carte1 = carte1, Carte2 = carte2 }, new CartePoker[] { carte3, carte4, carte5, carte6, carte7 })); }
/// <summary> /// Recherche d'une quinte parmi des cartes "triées" /// </summary> /// <param name="cartes"></param> /// <returns></returns> private Combinaison ChercherQuinte(List <CartePoker> cartes) { CartePoker cartePrec = null; int taille = 0; List <CartePoker> mainGagnante = new List <CartePoker>(); foreach (CartePoker carte in cartes) { if (taille == 0) { taille = 1; mainGagnante.Add(carte); cartePrec = carte; } else { if (carte.Hauteur != cartePrec.Hauteur) { if (StrictementInferieur(carte, cartePrec)) { taille++; mainGagnante.Add(carte); cartePrec = carte; if (taille == 5) { break; } } else { mainGagnante.Clear(); mainGagnante.Add(carte); cartePrec = carte; taille = 1; } } } } // Cas particulier de la quinte ou l'As vaut 1 if (taille == 4 && cartePrec.Hauteur == HauteurCarte.Deux) { if (cartes[0].Hauteur == HauteurCarte.As) { // On a une quinte qui finit en 1 ! mainGagnante.Add(cartes[0]); taille++; } } if (taille == 5) { return(new Combinaison(TypeCombinaison.Quinte, mainGagnante)); } else { return(null); } }
/// <summary> /// Renvoie le libellé de la carte (idem traduction francaise) /// </summary> /// <param name="carte"></param> /// <returns></returns> public static string LibelleCarte(this CartePoker carte) { if (carte == null) { return("-"); } else { return(NomHauteur(carte) + " de " + NomCouleur(carte)); } }
public void EqualsTest2() { Joueur j = new Joueur("Joueur"); j.Carte1 = JeuPoker.Cartes.AsCoeur; j.Carte2 = JeuPoker.Cartes.AsCarreau; var board = new CartePoker[] { JeuPoker.Cartes.AsTrefle, JeuPoker.Cartes.AsPique, JeuPoker.Cartes.DeuxCarreau, JeuPoker.Cartes.DeuxCoeur, JeuPoker.Cartes.DeuxTrefle }; MainPoker target = new MainPoker(j, board); object obj = new MainPoker(j, board); Assert.IsTrue(target.Equals(obj)); }
/// <summary> /// Récupération d'une image de carte en fonction de son état et de la valeur de la carte /// </summary> /// <param name="carte">La carte</param> /// <param name="main">L'état de la main</param> /// <param name="carteMontree">Le carte doit elle être montrée</param> /// <param name="cacherLesCartes">Les cartes sont elles tout le temps cachées ?</param> /// <returns></returns> private BitmapSource RecupererImageSelonEtat(CartePoker carte) { BitmapSource bi = null; switch (_etatDeLaMain) { // Affichage de la main d'un autre joueur case EtatMain.Concurrente: bi = GestionCartes.RecupererImageCarteCachee(); break; // Affichage de carte jetée case EtatMain.JeteePersonnelle: case EtatMain.JeteeConcurrente: if (_carteMontree) { bi = GestionCartes.RecupererImageSelonCarte(carte); } else { bi = GestionCartes.RecupererImageCarteJetee(); } break; // Affichage de carte montrées case EtatMain.Montree: bi = GestionCartes.RecupererImageSelonCarte(carte); break; // Affichage de son propre jeu case EtatMain.Personnelle: if (_carteMontree || !_cacherLesCartes) { bi = GestionCartes.RecupererImageSelonCarte(carte); } else { bi = GestionCartes.RecupererImageCarteCachee(); } break; // Affichage d'une carte regardée case EtatMain.Regardee: bi = GestionCartes.RecupererImageCarteRegardee(); break; // On ne renvoie rien case EtatMain.PasDeCartes: break; } return(bi); }
public void EqualsTest4() { Joueur j = new Joueur("Joueur"); j.Carte1 = JeuPoker.Cartes.AsCoeur; j.Carte2 = JeuPoker.Cartes.AsCarreau; var board1 = new CartePoker[] { JeuPoker.Cartes.AsTrefle, JeuPoker.Cartes.AsPique, JeuPoker.Cartes.DeuxCarreau, JeuPoker.Cartes.DeuxCoeur, JeuPoker.Cartes.DeuxTrefle }; var board2 = new CartePoker[] { JeuPoker.Cartes.RoiTrefle, JeuPoker.Cartes.RoiPique, JeuPoker.Cartes.RoiCarreau, JeuPoker.Cartes.RoiCoeur, JeuPoker.Cartes.DameTrefle }; MainPoker target = new MainPoker(j, board1); object obj = new MainPoker(j, board2); Assert.IsFalse(target.Equals(obj)); }
/// <summary> /// Enregistrer River /// </summary> /// <param name="carte"></param> /// <param name="pot"></param> internal void EnregistrerRiver(CartePoker carte, int pot) { try { River enregRiver = new River(); enregRiver.Carte = carte; enregRiver.Pot = pot; foreach (IStatistiques stat in _statistiques) { stat.Enregistrer(enregRiver); } } catch (Exception ex) { logServeur.Debug("Erreur lors d'EnregistrerRiver : " + ex.Message); } }
/// <summary> /// Enregistrer Turn /// </summary> /// <param name="carte"></param> /// <param name="pot"></param> internal void EnregistrerTurn(CartePoker carte, int pot) { try { Turn enregTurn = new Turn(); enregTurn.Carte = carte; enregTurn.Pot = pot; foreach (IStatistiques stat in _statistiques) { stat.Enregistrer(enregTurn); } } catch (Exception ex) { logServeur.Debug("Erreur lors d'EnregistrerTurn : " + ex.Message); } }
/// <summary> /// Porte dérobée pour tirer les cartes souhaitées : ne marche qu'en debug /// Les cartes sont dans le fichier %temp%\Pokercartes.txt et chaque ligne représente un tirage /// </summary> /// <returns>La carte choisie null si problème</returns> private static CartePoker TricherPourTirage() { CartePoker res = null; try { string pathCheat = System.IO.Path.Combine(Environment.GetEnvironmentVariable("TEMP"), NOM_FICHIER_TRICHE); if (System.IO.File.Exists(pathCheat) && new System.IO.FileInfo(pathCheat).Length > 0) { string[] lines = System.IO.File.ReadAllLines(pathCheat); bool ligneLue = false; System.IO.StreamWriter wrt = new System.IO.StreamWriter(pathCheat); foreach (string line in lines) { if (ligneLue) { wrt.WriteLine(line); } if (!ligneLue && line.Length != 0) { string[] hauteurcouleur = line.Split(' '); if (hauteurcouleur.Length >= 2) { ligneLue = true; try { res = new CartePoker((HauteurCarte)Enum.Parse(typeof(HauteurCarte), hauteurcouleur[0]), (CouleurCarte)Enum.Parse(typeof(CouleurCarte), hauteurcouleur[1])); } catch (Exception ex) { logServeur.Debug(" Warning : Problème 1 lors de la lecture des cartes à choisir : " + ex.Message); } } } } wrt.Close(); } } catch (Exception ex) { logServeur.Debug(" Warning : Problème 2 lors de la lecture des cartes à choisir : " + ex.Message); } return(res); }
/// <summary> /// Enregistrement du flop /// </summary> /// <param name="carte1"></param> /// <param name="carte2"></param> /// <param name="carte3"></param> /// <param name="pot"></param> internal void EnregistrerFlop(CartePoker carte1, CartePoker carte2, CartePoker carte3, int pot) { try { Flop enregFlop = new Flop(); enregFlop.Carte1 = carte1; enregFlop.Carte2 = carte2; enregFlop.Carte3 = carte3; enregFlop.Pot = pot; foreach (IStatistiques stat in _statistiques) { stat.Enregistrer(enregFlop); } } catch (Exception ex) { logServeur.Debug("Erreur lors d'EnregistrerFlop : " + ex.Message); } }
/// <summary> /// Modification des infos d'un joueur + les cartes + le pot /// </summary> /// <param name="joueurAChanger"></param> /// <param name="carte1"></param> /// <param name="carte2"></param> /// <param name="pot"></param> public void ChangerJoueur(Joueur joueurAChanger, EtatMain etatDeLaMain, CartePoker carte1, CartePoker carte2, int?pot) { logClient.Debug("Methode 'ChangerJoueur'"); logClient.Debug(" Joueur = " + joueurAChanger.Nom); logClient.Debug(" DerniereAction = " + joueurAChanger.DerniereAction.ToString()); logClient.Debug(" Tapis = " + joueurAChanger.TapisJoueur.ToString()); logClient.Debug(" JeterCartes = " + joueurAChanger.JeterCartes.ToString()); logClient.Debug(" TourDeJeu = " + joueurAChanger.TourDeJeu.ToString()); logClient.Debug(" EtatMain = " + etatDeLaMain); logClient.Debug(" Bouton = " + joueurAChanger.Bouton.ToString()); logClient.Debug(" Carte1 = " + carte1); logClient.Debug(" Carte2 = " + carte2); if (pot.HasValue) { logClient.Debug(" Pot = " + pot.Value.ToString()); } if (ChangementInfosJoueur != null) { ChangementInfosJoueur(joueurAChanger, etatDeLaMain, carte1, carte2, pot); } }
private static string NomHauteur(CartePoker carte) { string nom = string.Empty; switch (carte.Hauteur) { case HauteurCarte.As: nom = "As"; break; case HauteurCarte.Roi: nom = "Roi"; break; case HauteurCarte.Dame: nom = "Dame"; break; case HauteurCarte.Valet: nom = "Valet"; break; case HauteurCarte.Dix: case HauteurCarte.Neuf: case HauteurCarte.Huit: case HauteurCarte.Sept: case HauteurCarte.Six: case HauteurCarte.Cinq: case HauteurCarte.Quatre: case HauteurCarte.Trois: case HauteurCarte.Deux: nom = ((int)carte.Hauteur).ToString(); break; } return(nom); }
protected override void EnregistrerNouvelleDonne(NouvelleDonne evt) { _dealer = evt.Dealer; _petiteBlind = evt.PetiteBlind; _grosseBlind = evt.GrosseBlind; _montantGrosseBlind = evt.InfosBlind.MontantGrosseBlind; _montantPetiteBlind = evt.InfosBlind.MontantPetiteBlind; _listeJoueursDebutDonne = evt.ListeJoueurs; _numDonne = evt.NumeroDonne; EcrireDetailPartie( evt.DateEvenement, _numDonne, "NouvelleDonne", string.Format("{0},{1},{2}", evt.Dealer, evt.PetiteBlind, evt.GrosseBlind), string.Format("{0},{1}", evt.InfosBlind.MontantPetiteBlind, evt.InfosBlind.MontantGrosseBlind), string.Format("{0},{1}", evt.InfosBlind.MontantProchainePetiteBlind, evt.InfosBlind.MontantProchaineGrosseBlind) ); // Résumé partie _flop = new CartePoker[3]; _turn = null; _river = null; }
/// <summary> /// Nom de la couleur /// </summary> /// <param name="carte"></param> /// <returns></returns> private string ColorName(CartePoker card) { string nom = string.Empty; switch (card.Couleur) { case CouleurCarte.Coeur: nom = "heart"; break; case CouleurCarte.Pique: nom = "spade"; break; case CouleurCarte.Trefle: nom = "club"; break; case CouleurCarte.Carreau: nom = "diamond"; break; } return(nom); }
/// <summary> /// Nom de la couleur /// </summary> /// <param name="carte"></param> /// <returns></returns> private string NomCouleur(CartePoker carte) { string nom = string.Empty; switch (carte.Couleur) { case CouleurCarte.Coeur: nom = "coeur"; break; case CouleurCarte.Pique: nom = "pique"; break; case CouleurCarte.Trefle: nom = "trèfle"; break; case CouleurCarte.Carreau: nom = "carreau"; break; } return(nom); }
/// <summary> /// Renvoie une carte de poker /// </summary> /// <returns>La carte tirée. Si aucune carte n'est disponible, renvoie une exception</returns> internal static CartePoker TirerUneCarteAuHasard() { bool tirageOk = false; CartePoker carte = null; #if DEBUG carte = TricherPourTirage(); if (carte != null) { tirageOk = true; } #endif if (!tirageOk) { if (_listeCartes.Count == 52) { throw new ApplicationException("Plus de cartes disponibles"); } Random rd = new Random(); HauteurCarte hauteur; CouleurCarte couleur; do { hauteur = (HauteurCarte)_hauteursCartes.GetValue(rd.Next(_hauteursCartes.GetLength(0))); couleur = (CouleurCarte)_couleursCartes.GetValue(rd.Next(_couleursCartes.GetLength(0))); carte = new CartePoker(hauteur, couleur); }while (_listeCartes.ContainsKey(carte) && _listeCartes[carte] == 1); _listeCartes[carte] = 1; } return(carte); }
/// <summary> /// Nom d'une carte : utilisé pour les combinaisons /// </summary> /// <param name="carte"></param> /// <param name="article"></param> /// <param name="possessif"></param> /// <param name="pluriel"></param> /// <returns></returns> private string CardName(CartePoker card, bool article, bool plural) { string name = string.Empty; string art = "a "; string term = string.Empty; if (plural) { term = "s"; } switch (card.Hauteur) { case HauteurCarte.As: art = "an "; name = "Ace" + term; break; case HauteurCarte.Roi: name = "King" + term; break; case HauteurCarte.Dame: name = "Queen" + term; break; case HauteurCarte.Valet: name = "Jack" + term; break; case HauteurCarte.Dix: name = "Ten" + term; break; case HauteurCarte.Neuf: name = "Nine" + term; break; case HauteurCarte.Huit: name = "Eight" + term; break; case HauteurCarte.Sept: name = "Seven" + term; break; case HauteurCarte.Six: name = "Six" + term; break; case HauteurCarte.Cinq: name = "Five" + term; break; case HauteurCarte.Quatre: name = "Four" + term; break; case HauteurCarte.Trois: name = "Three" + term; break; case HauteurCarte.Deux: name = "Two" + term; break; } if (article) { name = art + name; } return(name); }
private void LancerEvtChangementInfosJoueur(string nom, EtatMain etatDeLaMain, CartePoker carte1, CartePoker carte2, int?pot) { if (ChangementInfosJoueur != null) { ChangementInfosJoueur(_listeJoueurs[nom], etatDeLaMain, carte1, carte2, pot); } }
/// <summary> /// Récupération d'une image de carte /// </summary> /// <param name="carte"></param> /// <returns></returns> private Bitmap RecupererImageSelonCarte(CartePoker carte) { Bitmap res = null; if (carte != null) { int hauteur = (int)carte.Hauteur; int couleur = (int)carte.Couleur; int jeuChoisi = 3; switch (carte.Hauteur) { case HauteurCarte.As: if (carte.Couleur == CouleurCarte.Pique) { res = RecupererImageSelonColonneLigne(1, 8); } else { res = RecupererImageSelonColonneLigne(7 + 2 * couleur, 6); } break; case HauteurCarte.Deux: case HauteurCarte.Trois: case HauteurCarte.Quatre: case HauteurCarte.Cinq: case HauteurCarte.Six: case HauteurCarte.Sept: case HauteurCarte.Huit: case HauteurCarte.Neuf: case HauteurCarte.Dix: // On n'est pas en "gros jeu" if (carte.Couleur == CouleurCarte.Pique) { res = RecupererImageSelonColonneLigne(5 + (hauteur - 1) % 4, 8 + (hauteur - 1) / 4); } else { res = RecupererImageSelonColonneLigne(10 - hauteur % 2 + 2 * (couleur - 1), (hauteur - 1) / 2 + 1); } break; case HauteurCarte.Valet: case HauteurCarte.Dame: case HauteurCarte.Roi: switch (carte.Couleur) { case CouleurCarte.Trefle: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 11) % 2, (hauteur - 11) / 2 + 1); break; case CouleurCarte.Carreau: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 10) % 2, (hauteur - 10) / 2 + 2); break; case CouleurCarte.Coeur: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 10) % 2, (hauteur - 10) / 2 + 5); break; case CouleurCarte.Pique: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 11) % 2, (hauteur - 11) / 2 + 4); break; } break; } } else { throw new NotImplementedException(); } return(res); }
/// <summary> /// Changement des infos d'un joueur /// </summary> /// <param name="joueurAChanger">Le joueur & ses infos</param> /// <param name="etatDeLaMain">L'etat de la main à afficher</param> /// <param name="carte1">Carte1 éventuellement</param> /// <param name="carte2">Carte2 éventuellement</param> /// <param name="pot">Le pot</param> public virtual void ChangerJoueur(Joueur joueurAChanger, EtatMain etatDeLaMain, CartePoker carte1, CartePoker carte2, int?pot) { if (joueurAChanger == _bot) { _bot.Carte1 = carte1; _bot.Carte2 = carte2; } }
/// <summary> /// Ajoute le libellé court de la carte dans "infos" /// </summary> /// <param name="c"></param> public static void AfficherLibelleCourtCarte(CartePoker c, TextPointer infos) { string ht = string.Empty; switch (c.Hauteur) { case HauteurCarte.As: ht = "A"; break; case HauteurCarte.Deux: case HauteurCarte.Trois: case HauteurCarte.Quatre: case HauteurCarte.Cinq: case HauteurCarte.Six: case HauteurCarte.Sept: case HauteurCarte.Huit: case HauteurCarte.Neuf: case HauteurCarte.Dix: ht = ((int)c.Hauteur).ToString(); break; case HauteurCarte.Valet: ht = "J"; break; case HauteurCarte.Dame: ht = "Q"; break; case HauteurCarte.Roi: ht = "K"; break; } Run r = new Run(ht, infos); r.Foreground = Brushes.Black; char res = ' '; SolidColorBrush carteCouleur = Brushes.Black; switch (c.Couleur) { case CouleurCarte.Trefle: res = (char)9827; break; case CouleurCarte.Carreau: res = (char)9830; carteCouleur = Brushes.Red; break; case CouleurCarte.Coeur: res = (char)9829; carteCouleur = Brushes.Red; break; case CouleurCarte.Pique: res = (char)9824; break; } r = new Run(res.ToString(), infos); r.FontFamily = new FontFamily("Courier New"); r.Foreground = carteCouleur; r.FontSize = 15; }
/// <summary> /// Récupération d'une image de carte /// </summary> /// <param name="carte"></param> /// <returns></returns> public static BitmapSource RecupererImageSelonCarte(CartePoker carte) { BitmapSource res = null; if (carte != null) { int hauteur = (int)carte.Hauteur; int couleur = (int)carte.Couleur; int jeuChoisi = (int)_jeuChoisi; switch (carte.Hauteur) { case HauteurCarte.As: if (carte.Couleur == CouleurCarte.Pique) { res = RecupererImageSelonColonneLigne(1, 8); } else { res = RecupererImageSelonColonneLigne(7 + 2 * couleur, 6); } break; case HauteurCarte.Deux: case HauteurCarte.Trois: case HauteurCarte.Quatre: case HauteurCarte.Cinq: case HauteurCarte.Six: case HauteurCarte.Sept: case HauteurCarte.Huit: case HauteurCarte.Neuf: case HauteurCarte.Dix: if (JeuChoisi != TypeJeuCarte.GrossesCartes) { // On n'est pas en "gros jeu" if (carte.Couleur == CouleurCarte.Pique) { res = RecupererImageSelonColonneLigne(5 + (hauteur - 1) % 4, 8 + (hauteur - 1) / 4); } else { res = RecupererImageSelonColonneLigne(10 - hauteur % 2 + 2 * (couleur - 1), (hauteur - 1) / 2 + 1); } } else { // On est en gros jeu if (carte.Couleur == CouleurCarte.Pique) { res = RecupererImageSelonColonneLigne(5 + (hauteur - 1) % 4 - 4, 8 + (hauteur - 1) / 4); } else { res = RecupererImageSelonColonneLigne(10 - hauteur % 2 + 2 * (couleur - 1), (hauteur - 1) / 2 + 6); } } break; case HauteurCarte.Valet: case HauteurCarte.Dame: case HauteurCarte.Roi: switch (carte.Couleur) { case CouleurCarte.Trefle: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 11) % 2, (hauteur - 11) / 2 + 1); break; case CouleurCarte.Carreau: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 10) % 2, (hauteur - 10) / 2 + 2); break; case CouleurCarte.Coeur: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 10) % 2, (hauteur - 10) / 2 + 5); break; case CouleurCarte.Pique: res = RecupererImageSelonColonneLigne(2 * jeuChoisi - 1 + (hauteur - 11) % 2, (hauteur - 11) / 2 + 4); break; } break; } } else { res = new BitmapImage(); } return(res); }
protected override void EnregistrerRiver(River evt) { _river = evt.Carte; EcrireDetailPartie(evt.DateEvenement, _numDonne, "River", evt.Carte.LibelleCarte(), evt.Pot.ToString(), PAS_D_INFOS); }
/// <summary> /// Déclenche une vérification de carte /// </summary> /// <param name="carte"></param> /// <param name="carteAttendue"></param> private void VerifierCarte(CartePoker carteAttendue, MainPoker main, int indexCarte) { var carte = main.ResultatMain.MainGagnante[indexCarte]; Assert.AreEqual(carte, carteAttendue, string.Format("{0} : carte n°{1}", main.ResultatMain.TypeCombinaison, indexCarte + 1)); }
/// <summary> /// Les 2 cartes se suivent elles ? /// </summary> /// <param name="carte1"></param> /// <param name="carte2"></param> /// <returns></returns> private bool StrictementInferieur(CartePoker carte1, CartePoker carte2) { return(((int)carte2.Hauteur) == ((int)carte1.Hauteur) + 1); }
protected override void EnregistrerTurn(Turn evt) { _turn = evt.Carte; EcrireDetailPartie(evt.DateEvenement, _numDonne, "Turn", evt.Carte.LibelleCarte(), evt.Pot.ToString(), PAS_D_INFOS); }
/// <summary> /// Nom d'une carte : utilisé pour les combinaisons /// </summary> /// <param name="carte"></param> /// <param name="article"></param> /// <param name="possessif"></param> /// <param name="pluriel"></param> /// <returns></returns> private string NomCarte(CartePoker carte, bool article, bool possessif, bool pluriel) { string nom = string.Empty; string art = string.Empty; string pos = string.Empty; string posart = string.Empty; string term = string.Empty; if (pluriel) { term = "s"; } switch (carte.Hauteur) { case HauteurCarte.As: art = "un "; pos = "d'"; posart = "à l'"; nom = "As"; break; case HauteurCarte.Roi: art = "un "; pos = "de "; posart = "au "; nom = "Roi" + term; break; case HauteurCarte.Dame: art = "une "; pos = "de "; posart = "à la "; nom = "Dame" + term; break; case HauteurCarte.Valet: art = "un "; pos = "de "; posart = "au "; nom = "Valet" + term; break; case HauteurCarte.Dix: case HauteurCarte.Neuf: case HauteurCarte.Huit: case HauteurCarte.Sept: case HauteurCarte.Six: case HauteurCarte.Cinq: case HauteurCarte.Quatre: case HauteurCarte.Trois: case HauteurCarte.Deux: art = "un "; pos = "de "; posart = "au "; nom = ((int)carte.Hauteur).ToString(); break; } if (article && possessif) { nom = posart + nom; } else if (article) { nom = art + nom; } else if (possessif) { nom = pos + nom; } return(nom); }