public void Launch(LogicPerso player) { jeu.tourReelPlayer(true); int currentRelance = jeu.CurrentRelance(); currentPlayer = player; slider.minValue = currentRelance + 1; slider.maxValue = player.nbJeton() + currentRelance; slider.value = currentRelance + 1; if (currentRelance == 0) { miseButton.SetActive(true); relanceButton.SetActive(false); suivreButton.SetActive(false); checkButton.SetActive(true); } else { miseButton.SetActive(false); relanceButton.SetActive(true); suivreButton.SetActive(true); checkButton.SetActive(false); } StartCoroutine("TimerMenu"); }
public IEnumerator Distribuer(LogicPerso player, LogicGame jeu) { LogicCard newCard; distrib.Play(3); //print("distrib"); while (player.nbCard() != 2) { yield return(new WaitForSeconds(0.1f)); newCard = this.Piocher(player.nextCardPosition(), player.nextCardRotation(), 0.2f, player.gameObject, player.isReel(), new Vector3(9, 9, 1)); player.setCard(newCard); player = player.next(); } ; IEnumerator Play = jeu.PlayJoueurs(); StartCoroutine(Play); }
public IEnumerator ramasseMise(LogicPerso player, int nbJoueurManche) { //print("rammase"); jeton.Play(); do { if (player.currentMise() != 0) { IEnumerator move = moveJeton(player.misePosition(), potPosition, player.rammasseCurrentMise()); StartCoroutine(move); } player = player.next(); } while (!player.haveBlind()); jeu.videCurrentRelance(); yield return(new WaitForSeconds(2f)); IEnumerator Play = jeu.PlayTour(); StartCoroutine(Play); }
public void setPrevious(LogicPerso previousPlayer) { _previousPlayer = previousPlayer; }
public void setNext(LogicPerso nextPlayer) { _nextPlayer = nextPlayer; }
private IEnumerator moveJetonJoueur(Vector3 startPosition, Vector3 finalPosition, int mise, LogicPerso player) { GameObject pot; float vitesse = 0.2f; if (mise < 200) { pot = (GameObject)Instantiate(Resources.Load("Prefab/PotPetit"), startPosition, Quaternion.identity, this.transform); } else if (mise > 1000) { pot = (GameObject)Instantiate(Resources.Load("Prefab/PotGros"), startPosition, Quaternion.identity, this.transform); } else { pot = (GameObject)Instantiate(Resources.Load("Prefab/PotMoyen"), startPosition, Quaternion.identity, this.transform); } pot.transform.localScale = new Vector3(0.136f, 0.136f, 0.136f); while ( Math.Abs(pot.transform.position.x - finalPosition.x) > vitesse || Math.Abs(pot.transform.position.y - finalPosition.y) > vitesse || Math.Abs(pot.transform.position.z - finalPosition.z) > vitesse ) { yield return(new WaitForSeconds(0.1f)); if (Math.Abs(pot.transform.position.x - finalPosition.x) > vitesse / 2f) { if (pot.transform.position.x - finalPosition.x < 0) { pot.transform.Translate(vitesse, 0, 0); } else { pot.transform.Translate(-vitesse, 0, 0); } } if (Math.Abs(pot.transform.position.y - finalPosition.y) > vitesse / 2f) { if (pot.transform.position.y - finalPosition.y < 0) { pot.transform.Translate(0, vitesse, 0); } else { pot.transform.Translate(0, -vitesse, 0); } } if (Math.Abs(pot.transform.position.z - finalPosition.z) > vitesse / 2f) { if (pot.transform.position.z - finalPosition.z < 0) { pot.transform.Translate(0, 0, vitesse); } else { pot.transform.Translate(0, 0, -vitesse); } } } Destroy(pot); player.AddToNbJeton(mise); }
public double CalculEsperances(LogicPerso Joueur, LogicCard[] main, LogicCard[] plateau) { int[] couleurs = { 0, 0, 0, 0 }; int[] valeurs = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int[] quinte = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int[][] flush = { new [] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new [] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new [] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, new [] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; LogicCard[] allCards = { main[0], main[1], plateau[0], plateau[1], plateau[2], plateau[3], plateau[4] }; int t = 0; int v = 0; int p = 0; int b = 0; int c = 0; int fMax = -1; int qMax = -1; int cMax = -1; int bMax = -1; int pMax = -1; int vMax = -1; int couMax = -1; bool win = false; foreach (LogicCard card in allCards) { if (card == null) { break; } int s = card.signe(); int co = card.color(); couleurs[co]++; valeurs[s]++; t++; for (int j = -4; j < 1 && j + s < 10; j++) { if (j + s >= 0) { flush[co][j + s]++; if (flush[co][j + s] == 5) { fMax = j + s; } } } if (s == 0) { flush[co][9]++; if (flush[co][9] == 5) { fMax = 9; } } } for (int i = 0; i < 4; i++) { if (couleurs[i] == 5) { couMax = 1; } } for (int i = 0; i < 13; i++) { if (valeurs[i] != 0) { v++; vMax = i; for (int j = -4; j < 1 && j + i < 10; j++) { if (j + i >= 0) { quinte[j + i]++; if (quinte[j + i] == 5) { qMax = i; } } } } if (valeurs[i] == 2) { p++; pMax = i; } if (valeurs[i] == 3) { b++; bMax = i; } if (valeurs[i] == 4) { c++; cMax = i; } } // Probabilité quinte flush royale float Qr; int CardQr = 0; if (fMax == 9) { Qr = 1; win = true; Joueur.givePoint(180); } else { for (int couleur = 0; couleur < 4; couleur++) { if ((5 - flush[couleur][9]) < (7 - t)) { CardQr += Binom(47, 7 - (t + (5 - flush[couleur][9]))); } } Qr = CardQr / Omega[t]; } // Probabilité quinte flush float Qf = 0; int CardQf = 0; if (fMax > -1 || win == true) { Qf = 1; win = true; Joueur.givePoint(160 + fMax); } else { for (int serie = 0; serie < 9; serie++) { for (int couleur = 0; couleur < 4; couleur++) { int x = 5 - flush[couleur][serie]; int r = 7 - t - x; if (r < 0) { CardQf += 0; } else { CardQf += Binom(46, r); } } } Qf = CardQf / Omega[t]; } // Probabilités Carrée int CardCa = 0; float Ca; if (cMax > -1 || win == true) { Ca = 1; win = true; Joueur.givePoint(140 + cMax); } else { if (t - v == 0) { CardCa += (13 - t) * Binom(48 - t, 3 - t) + t * Binom(47 - t, 2 - t); } else { CardCa += Binom(49 - v, 4 - v); } Ca = CardCa / Omega[t]; } // Full if ((pMax > -1 && bMax > -1) || win == true) { win = true; Joueur.givePoint(120 + cMax); } // Probabilité couleur float C; int CardC = 0; if (couMax == 1 || win == true) { C = 1; win = true; Joueur.givePoint(100 + vMax); } else { for (int couleur = 0; couleur < 4; couleur++) { int x = 5 - couleurs[couleur]; int r = 7 - t - x; if (r < 0) { CardC += 0; } if (r == 2) { CardC += Binom(13 - x, x) * Binom(39, r) + 39 * Binom(13 - x, x + 1) + Binom(13 - x, x - 2); } if (r == 1) { CardC += Binom(13 - x, x) * Binom(39, r) + 39 * Binom(13 - x, x + 1); } if (r == 0) { CardC += Binom(13 - x, x) * Binom(39, r); } } CardC -= CardQr + CardQf; C = CardC / Omega[t]; } // Probabilité quinte float Q; int CardQ = 0; int CardN = 0; int CardP = 0; int CardDp = 0; int CardB = 0; int Cn = 0; int Cp1 = 0; int Cp2 = 0; int Cdp1 = 0; int Cdp2 = 0; int Cdp3 = 0; int Cb1 = 0; int Cb2 = 0; int Cp3 = 0; int Cdp4 = 0; int Cdp5 = 0; int Cb3 = 0; int Cdp6 = 0; int Cb4 = 0; if (qMax > -1 || win == true) { Q = 1; win = true; Joueur.givePoint(80 + qMax); } else { for (int serie = 0; serie < 10; serie++) { int a = 6; if (serie == 9) { a = 5; } int x = 5 - quinte[serie]; int r = 7 - t - x; if (r < 0) { CardQ += 0; } else { // Cas 0 if (t - v == 0) { // Calcul des #C for (int couleur = 0; couleur < 4; couleur++) { int y = 5 - couleurs[couleur]; if (y <= 7 - t) { Cn += (int)(Binom(7 - t, y + 2) + Binom(6 - t, y + 1) * Math.Pow(3, 6 - t - y) + Binom(7 - t, y) * Math.Pow(3, 7 - t - y)); Cp1 += (int)((5 - y) * Binom(7 - t, y) + (t - 5 + y) * (Binom(7 - t, y) * Math.Pow(3, 6 - t - y) + Binom(7 - t, y + 1))); Cp2 += Binom(5 - t, y); Cdp1 += Binom(5 - t, y); Cdp2 += Binom(5 - t, y); Cdp3 += Binom(4 - t, y); Cb1 += (t == 5 - y) ? 1 : 0; Cb2 += (t == 5 - y) ? 1 : 0; } } //Calcul des #Q CardN += (int)((Math.Pow(4, 7 - t) - Cn) * Binom(13 - a, r)); CardP += (int)((3 * v * (Math.Pow(4, 6 - t) - Cp1) + 6 * (6 - v) * (Math.Pow(4, 5 - t) - Cp2)) * Binom(13 - a, 6 - x - v)); CardDp += (int)(Binom(5 - x, 2) * 9 * (Math.Pow(4, 5 - t) - Cdp1) + Binom(x, 2) * 36 * (Math.Pow(4, 3 - t) - Cdp2) + 3 * (5 - x) * 6 * x * (Math.Pow(4, 4 - t) - Cdp3)); CardB += (int)(3 * v * (Math.Pow(4, 5 - t) - Cb1) + 4 * x * (Math.Pow(4, 4 - t) - Cb2)); } // Cas 1 else if (t - v == 1) { // Calcul des #C for (int couleur = 0; couleur < 4; couleur++) { int y = 5 - couleurs[couleur]; if (y <= 7 - t) { Cp3 += (int)(Binom(6 - t, y + 1) * Math.Pow(3, 6 - t - y) + Binom(7 - t, y) * Math.Pow(3, 7 - t - y)); Cdp4 += Binom(6 - t, y); Cdp5 += Binom(5 - t, y); Cb3 += (t == 5 - y) ? 1 : 0; } } //Calcul des #Q CardP += (int)((Math.Pow(4, 7 - t) - Cp3) * Binom(13 - a, 6 - x - v)); CardDp += (int)((4 - x) * 3 * (Math.Pow(4, 6 - t) - Cdp4) + x * 6 * (Math.Pow(4, 5 - t) - Cdp5)); CardB += (int)(2 * (Math.Pow(4, 6 - t) - Cb3)); } // Cas 2 else if (t - v == 2) { // Calcul des #C for (int couleur = 0; couleur < 4; couleur++) { int y = 5 - couleurs[couleur]; if (y <= 7 - t) { if (b == 0) { Cdp6 += Binom(7 - t, y); } if (b == 1) { Cb4 += 1; } } } //Calcul des #Q if (b == 0) { CardDp += (int)((Math.Pow(4, 7 - t) - Cdp6)); } if (b == 1) { CardB += (int)((Math.Pow(4, 7 - t) - Cb4)); } } } } CardQ = CardN + CardP + CardDp + CardB; Q = CardQ / Omega[t]; } // Probabilités Brelan int CardBr = 0; float Br; if (bMax > -1 || win == true) { Br = 1; win = true; Joueur.givePoint(60 + bMax); } else { if (t - v == 0) { CardBr += (int)(3 * t * Math.Pow(4, 5 - v) * Binom(13 - v, 5 - v) + 4 * (5 - t) * Math.Pow(4, 4 - v) * Binom(13 - v, 4 - v)); } ; if (t - v == 1) { CardBr += (int)(2 * Math.Pow(4, 5 - v) * Binom(13 - v, 5 - v)); } ; //if (t - v == 2 && b == 1) CardBr += (int)(Math.Pow(4, 5 - v) * Binom(13 - v, 5 - v)); Br = CardBr / Omega[t]; } // Probabilités Double Paire int CardDpa = 0; float Dpa; if (p > 1 || win == true) { Dpa = 1; win = true; Joueur.givePoint(40 + pMax); } else { if (p == 0) { CardDpa += (int)(2 * 3 * t * Math.Pow(4, 5 - v) * Binom(13 - v, 5 - v) + 2 * 6 * (5 - t) * Math.Pow(4, 3 - v) * Binom(13 - v, 3 - v) + 6 * (5 - t) * 3 * t * Math.Pow(4, 4 - v) * Binom(13 - v, 5 - v)); } if (p == 1) { CardDpa += (int)(3 * t * Math.Pow(4, 5 - v) * Binom(13 - v, 5 - v) + 6 * (5 - t) * Math.Pow(4, 3 - v) * Binom(13 - v, 3 - v)); } //if (t - v == 2 && b == 0) CardDpa +=; //if (t - v == 3 && b == 0) CardBr += Math.Pow(4, 5 - v) * Binom(13 - v, 5 - v); Dpa = CardDpa / Omega[t]; } // Probabilités Paire int CardPa = 0; float Pa; if (pMax > -1 || win == true) { Pa = 1; win = true; Joueur.givePoint(20 + pMax); } else { if (t - v == 0) { CardPa += (int)((3 * v * (Math.Pow(4, 6 - t) - Cp1) + (6 - v) * 6 * (Math.Pow(4, 5 - t) - Cp2)) * Binom(13 - v, 6 - v)); } if (t - v == 1) { CardPa += (int)((3 * v * (Math.Pow(4, 6 - t) - Cp1) + (6 - v) * 6 * (Math.Pow(4, 5 - t) - Cp2)) * Binom(13 - v, 6 - v)); } //if (t - v == 1) { CardPa += (int)(Binom(13, 6 - v) * (Math.Pow(4, 7 - t) - Cp3) - CardP);} Pa = CardPa / Omega[t]; } if (win == false) { Joueur.givePoint(vMax); } if (Joueur.isReel()) { _textTableau.Find("TextTab_1").gameObject.GetComponent <Text>().text = $"{Qr*100:0.0000}%"; _textTableau.Find("TextTab_2").gameObject.GetComponent <Text>().text = $"{Qf * 100:0.0000}%"; _textTableau.Find("TextTab_3").gameObject.GetComponent <Text>().text = $"{Ca * 100:0.0000}%"; _textTableau.Find("TextTab_4").gameObject.GetComponent <Text>().text = $"{C * 100:0.0000}%"; _textTableau.Find("TextTab_5").gameObject.GetComponent <Text>().text = $"{Q * 100:0.0000}%"; _textTableau.Find("TextTab_6").gameObject.GetComponent <Text>().text = $"{Br * 100:0.0000}%"; _textTableau.Find("TextTab_7").gameObject.GetComponent <Text>().text = $"{Dpa * 100:0.0000}%"; _textTableau.Find("TextTab_8").gameObject.GetComponent <Text>().text = $"{Pa * 100:0.0000}%"; } /* * print("stat"); * * print("Quinte Flush Royale" + Qr *100 + "%"); * print("Quinte Flush" + Qf * 100 + "%"); * print("Carrée" + Ca * 100 + "%"); * print("Couleur" + C * 100 + "%"); * print("Quinte" + Q * 100 + "%"); * print("Brelan" + Br * 100 + "%"); * print("DoublePaire" + Dpa * 100 + "%"); * print("Paire" + Pa * 100 + "%"); * print("endStat"); */ //return (Pa+Dpa*2+Br*3+Q*4+C*5+Ca*6+Qf*7+Qr*8)/36.0; return((Pa + Dpa + Br + Q + C + Ca + Qf + Qr) / 8.0); }
public int Choisir(LogicPerso player) { return(0); }