Boucle while et condition if

Résolu
Cybersnap Messages postés 19 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 17 août 2007 - 29 avril 2007 à 17:31
Cybersnap Messages postés 19 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 17 août 2007 - 2 mai 2007 à 08:52
Bonjour à tous,  je réalise un programme de poker pour la fin de l'année mais je cale sur un point ou je dois verifier si les joueurs on une paire.

voici le code :

int z = 1;
while

(z == 5) {
if ((C1J1 % 13 1) & (CzJ3 % 13 1)){
this.mainj1.Text "Vous avez une paire d'as";winJ1 13;

}

j'aimerais avoir C1J3 puis C2J3 jusque C5J3

il me met une erreur, je ne vois pas comment faire. Pourriez vous m'aider svp.

Merci d'avance

8 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
2 mai 2007 à 08:29
Hello,

Quelques détails :
Comme je te l'ai dis dans mon premier message, while (z == 5)  signifie tant que z est égal à 5.
Il est donc normal que tu ne trouve rien, puisqu'il sort de la boucle directement.

Ensuite, les tablaux commencent à l'index 0, et non 1, donc en principe, tu as
CJ1[0] CJ1[1]
CJ2[0] CJ2[1]
CJ3[0] CJ3[1] CJ3[2] CJ3[3] CJ3[4]

Donc si tu tiens vraiment à faire une boucle while, tu met comme condition while (z<5).
Mais une solution plus élégante consiste à utiliser une boucle for :
for (int i =0;i<CJ3.length;i++)
{
//intérieur de ta boucle.
}

Ensuite, vérifier chaque hauteur, ce n'est vraiment pas une manière de programmer.

Fais trois méthodes :

private string GetName(int card)
{
switch (card%13)
{
case 1:
return "d'as";
case 2:
return "de deux";
case 3:
return "de trois";
case 4:
return "de quatre";
case 5:
return "de cinq";
case 6:
return "de six";
case 7:
return "de sept";
case 8:
return "de huit";
case 9:
return "de neuf";
case 10:
return "de dix";
case 11:
return "de valet";
case 12:
return "de dame";
case 0:
return "de roi";
}
return "";
}

et

private int GetScore(int card){
switch (card % 13)
{
case 1:
return 13;
case 0:
return 12;
default:
return (card % 13) - 1;
}
}

Et enfin

public void CheckPairs(int card)
{
for (int i =0;i<CJ3.length;i++)
{
if (card%13 == CJ3%13)
{
this.mainj1.Text = "Vous avez une paire "+GetName(card);
winJ1 = GetScore(card);
}
}
}

De cette manière, tu peux appeler cette méthode avec la carte CJ1[0], mais aussi avec les cartes CJ1[1], CJ2[0], et CJ2[1].

Ne te vexes pas, mais j'ai l'impression que tu n'as pas beaucoup d'expérience en programmation.
N'hésite pas à aller un peu sur internet non seulement pour poser  des question, mais aussi pour trouver des tutoriels, qui pourront beaucoup t'apprendre.

Amicalement, SharpMao
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
30 avril 2007 à 08:15
Hello,

alors plusieurs choses

tu notes while (z==5)
ce qui veut dire tant que z est égal à 5, comme z est initialisé à 1 juste avant, il ne fait rien.
Ensuite, tu ne peux pas boucler sur des variables, amsi sur des tableaux, ou des listes

int[] CJ1 = new int[5]//Cartes du joueur 1
(Pour la suite, j'admet que ce tableau est rempli avec les cartes du joueru 1)

à ce moment, tu doit faire deux boucles, pour controler les cartes

for(int i = 0;i<CJ1.length-1;i++)
{
   for(int j = i+1;j<CJ1.length;j++)
   {
      if(CJ1[i]%13 == CJ1[j]%13)
         this.mainj1.Text = "Vous avez une paire"

   }
}

Avec ces deux boucles, tu controles la 1ère carte avec les 4 autres, la deuxième avec les trois suivantes,...

Une dernière chose, comme tu as pu le constater, j'ai enlevé la référence à la paire d'as.
Tu peux comparer de manière générale, et en resortir la valeur.

Attention tout de même, avec ce système, si tu as un brelan, il te marquera trois paires !

Si tu as d'autres questions, n'hésite pas.

Amicalement, SharpMao
0
Cybersnap Messages postés 19 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 17 août 2007
30 avril 2007 à 11:06
Merci bcp pour la réponse mais ce qu'il y a c'est que avant je donnais des points quand s'était une paire d'as ou une paire de deux comme ca, je sais qui à la plus haute main :s

J'aurais pas du choisir ce jeux lol

je m'embrouille avec mes conditions pour savoir qui a quoi comme carte :(

Merci de ton aide.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
30 avril 2007 à 12:15
Hello,

Encore une autre méthode :

int[]
CardsOfPlayer1 =
new
int[13];

for (
int
i = 0;
i <
CJ1.
Length - 1;
i++)
{

   CardsOfPlayer1[
CJ1[
i] % 13]++;
}

//vérifie les paires, brelan, carrés,...
for (
int
i=0;
i<13;
i++)
{

   switch (
CardsOfPlayer1[
i])
   {

      case 2:

         //Ici, tu connais La hauteur decimal la carte, par la variable i. 
         //Il faut juste faire attention, si i=0, Ca signifie roi (si le roi = 13, 13 % 13 = 0)
          this.mainj1.Text =
Vous avez une paire";

         break;

      case 3:
          this.mainj1.Text =
Vous avez un brelan";

         break;

      case 4:
          this.mainj1.Text =
Vous avez un carré";

         break;
   }
}

Amicalement, SharpMao
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
30 avril 2007 à 12:15
Oups,
il y a eu un petit problème avec le commentaire, il faut lire :

case 2:

         //Ici, tu connais la hauteur de la carte, par la variable i. 

Amicalement, SharpMao
0
Cybersnap Messages postés 19 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 17 août 2007
30 avril 2007 à 13:14
Merci, j'essayerai ca tantot en rentrant.

Amicalement, Nico
0
Cybersnap Messages postés 19 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 17 août 2007
1 mai 2007 à 16:08
J'ai modifier mon code pour mieu comprendre ton systeme.

Maintenant j'ai
CJ1[1] CJ1[2]
CJ2[1] CJ2[2]
CJ3[1] CJ3[2] CJ3[3] CJ3[4] CJ3[5] 

donc dans mon jeux j'ai deux joueurs qui ont 2 cartes chacun au début CJ1 CJ2.

puis les 5 cartes sur la table que les joueurs peuvent utiliser CJ3

ici j'aimerais verifier les paires en faisant un test sur la CJ1[1] et les cartes CJ3[1,2,3,4,5]

voici mon code :

// boucle pour verifier si les joueurs ont une paire avec leur jeux et le jeux du j3

while (z == 5) {

if ((CJ1[1] % 13 == 1) & (CJ3[z] % 13 == 1)){
this.mainj1.Text "Vous avez une paire d'as"; // simple indication au joueurswinJ1 13; // ici j'atribue des points aux diff mains la paire d'as bat la paire de deux etc

}

else{

if ((CJ1[1] % 13 == 2) & (CJ3[z] % 13 == 2)){
this.mainj1.Text "Vous avez une paire de deux";winJ1 1;

}

else{

if ((CJ1[1] % 13 == 3) & (CJ3[z] % 13 == 3)){
this.mainj1.Text "Vous avez une paire de trois";winJ1 2;

}

else{

if ((CJ1[1] % 13 == 4) & (CJ3[z] % 13 == 4)){
this.mainj1.Text "Vous avez une paire de quatre";winJ1 3;

}

else{

if ((CJ1[1] % 13 == 5) & (CJ3[z] % 13 == 5)){
this.mainj1.Text "Vous avez une paire de cinq";winJ1 4;

}

else{

if ((CJ1[1] % 13 == 6) & (CJ3[z] % 13 == 6)){
this.mainj1.Text "Vous avez une paire de six";winJ1 5;

}

else{

if ((CJ1[1] % 13 == 7) & (CJ3[z] % 13 == 7)){
this.mainj1.Text "Vous avez une paire de sept";winJ1 6;

}

else{

if ((CJ1[1] % 13 == 8) & (CJ3[z] % 13 == 8)){
this.mainj1.Text "Vous avez une paire de huit";winJ1 7;

}

else{

if ((CJ1[1] % 13 == 9) & (CJ3[z] % 13 == 9)){
this.mainj1.Text "Vous avez une paire de neuf";winJ1 8;

}

else{

if ((CJ1[1] % 13 == 10) & (CJ3[z] % 13 == 10)){
this.mainj1.Text "Vous avez une paire de dix";winJ1 9;

}

else{

if ((CJ1[1] % 13 == 11) & (CJ3[z] % 13 == 11)){
this.mainj1.Text "Vous avez une paire de vallet";winJ1 10;

}

else{

if ((CJ1[1] % 13 == 12) & (CJ3[z] % 13 == 12)){
this.mainj1.Text "Vous avez une paire de Dame";winJ1 11;

}

else{

if ((CJ1[1] % 13 == 0) & (CJ3[z] % 13 == 0)){
this.mainj1.Text "Vous avez une paire de roi";winJ1 12;

}

else{

}

}

}

}

}

}

}

}

}

}

}

}

}

z = z + 1;

}

Merci d'avance Amicalement, Nico
0
Cybersnap Messages postés 19 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 17 août 2007
2 mai 2007 à 08:52
Merci de ton aide, oui je débute en programmation ;)

je crois que je ne prendrai pas cette option la l'année prochaine ;)

je commence à comprendre, ca fct avec une boucle for :)

je vais essayer ton code et voir quoi, merci beaucoup.

Amicalement, Nico
0
Rejoignez-nous