Jeu du 421, besoin d'aide !!

Jeu du 421, besoin d'aide !! - C - Programmation

Marsh Posté le 29-06-2013 à 14:01:18    

Bonjour, Je suis debutant en C et je viens de realiser un petit programme sur emacs.C'est le jeu du 421.
Les règles sont simples, on a 4 essais pour réaliser avec les 3 dés un jet donnant 421.
Le programme lance les dés et affiche le résultat.
Si c'est un 421, on affiche "Gagné", sinon on demande à l'utilisateur d'appuyer sur la touche R pour relancer.
Au bout du 4ème essai, au lieu de proposer de relancer, on affichera "Perdu" et le programme se terminera, sauf que la console m'affiche des erreurs au niveau de la fonction random, enfin c'est ce que je crois.
Merci si vous pouvez me donner un petit coup de pouce. :D
 

Code :
  1. #include <stdio.h>
  2. #include <curses.h>
  3. #include <stdlib.h>
  4. main()
  5. {
  6.   int de1, de2, de3;
  7.   int gagne;
  8.   int essai;
  9.   gagne=0;
  10.   essai=0;
  11.   random ();
  12. do
  13.   {
  14.     clear ();
  15.     de1 = random (6) + 1;
  16.     de2 = srandom (6) + 1;
  17.     de3 = random (6) + 1;
  18.     printf("Lancer:\n" );
  19.     printf("[%d] [%d] [%d]",de1,de2,de3);
  20.     getchar();
  21.     if (de1 == 4)
  22.       {
  23. if (de2 == 2)
  24.   {
  25.     if (de3 == 1)
  26.   gagne = 1;
  27.     else
  28. gagne = 0;
  29.       }
  30.     else
  31.       {
  32. if (de2 == 1)
  33.   {
  34.     if (de3 == 2)
  35.       gagne = 1;
  36.     else
  37.       gagne = 0;
  38.   }
  39. else
  40.   gagne = 0;
  41.       }
  42.       }
  43.     if (de2 == 4)
  44.       {
  45. if (de1 == 2)
  46.   {
  47.     if (de3 == 1)
  48.       gagne = 1;
  49.     else
  50.       gagne = 0;
  51.   }
  52. else
  53.   {
  54.     if (de1 == 1)
  55.     {
  56.       if (de3 == 2)
  57.       gagne = 1;
  58.       else
  59.       gagne = 0;
  60.   }
  61. else
  62.   gagne = 0;
  63.       }
  64.   }
  65. if (de3 == 4)
  66.    {
  67.      if (de2 == 2)
  68.        {
  69.  if (de1 == 1)
  70.    gagne = 1;
  71.  else
  72.    gagne = 0;
  73.        }
  74.      else
  75.        {
  76.  if (de2 == 1)
  77.    {
  78.      if (de1 == 2)
  79.        gagne = 1;
  80.      else
  81.        gagne = 0;
  82.    }
  83.  else
  84.    gagne = 0;
  85.           }
  86.    }
  87. essai = essai + 1;
  88. }
  89. while ((!gagne) && (essai != 4));
  90. if (gagne)
  91.   printf("\nGagne !!!!" );
  92. else
  93.    printf ("\nPerdu..." );
  94. getchar();
  95. }


 
Les erreurs:
 

Code :
  1. jeux_du_421.c: In function ‘main’:
  2. jeux_du_421.c:15: error: too many arguments to function ‘random’
  3. jeux_du_421.c:16: error: void value not ignored as it ought to be
  4. jeux_du_421.c:17: error: too many arguments to function ‘random’


Reply

Marsh Posté le 29-06-2013 à 14:01:18   

Reply

Marsh Posté le 30-06-2013 à 10:34:00    

T'as rien réalisé du tout, t'as pompé le code source d'internet et tu nous demandes de le corriger parce que t'as aucune idée de comment fonctionne le programme. Les erreurs sont pourtant ultra explicites, même pour un débutant
 
https://www.google.fr/#sclient=psy- [...] 9%29%3B%22
 
:hello:


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 30-06-2013 à 13:20:13    

artiis a écrit :

Code :
  1. #include <stdio.h>
  2. #include <curses.h>
  3. #include <stdlib.h>
  4. main()
  5. {
  6.   int de1, de2, de3;
  7.   int gagne;
  8.   int essai;
  9.   gagne=0;
  10.   essai=0;
  11.   random ();
  12. do
  13.   {
  14.     clear ();
  15.     de1 = random (6) + 1;
  16.     de2 = srandom (6) + 1;
  17.     de3 = random (6) + 1;
  18. ...



 
Salut
Ce code est une catastrophe. Allez, en vrac
1) main() est une fonction donc elle a un type (int)
2) tu appelles random() sans paramètre puis tu appelles random() avec le paramètre "6" (une même fonction s'appelle toujours de la même façon). Puis, pour le dé suivant, tu appelles srandom() !!!???!!!
3) ta recherche du 421 est une horreur. Tu vas évaluer tous les cas possibles (4 puis 2 puis 1 ou 4 puis 1 puis 2). Heureusement il n'y en a que 1x2x3 soit 6 cas possibles mais si tu devais programmer un yam tu aurais 1x2x3x4x5 soit 120 cas à traiter !!!
 
Donc conseil n° 1: lis un tuto sur l'apprentissage du C
Conseil n° 2: examine le but des fonctions que tu utilises (à quoi sert srandom(), random(), comment on s'en sert)
Conseil n° 3: si tu pompes du code sur le net, évite de dire qu'il vient de toi surtout si tu n'as même pas le niveau pour le comprendre...
 
Tiens, juste pour l'exemple, voici un algo pour chercher "421" dans 3 dés (pour débutants)

Code :
  1. int de[3];
  2. int flag
  3. int i;
  4.  
  5. for (flag=0, i=0; i < 3; i++)
  6. {
  7.    switch (de[i])
  8.    {
  9.        case 1: flag+=1; break;
  10.        case 2: flag+=2; break;
  11.        case 4: flag+=4; break;
  12.    }
  13. }
  14. printf("%s\n", (flag == 7) ?"gagné" :"perdu" );


 
Et un autre algo un peu plus avancé mais qui offre plus de souplesse

Code :
  1. typedef struct {
  2.    unsigned short value;
  3.    char flag;
  4. }t_combi;
  5.    
  6. int de[3];
  7. t_combi need[]={
  8.    {1, 0x01},
  9.    {2, 0x02},
  10.    {4, 0x04},
  11.    {0, 0x00},
  12. };
  13. t_combi *pt_need;
  14. int flag;
  15. int combi;
  16. int i;
  17.  
  18. for (flag=0, combi=0, pt_need=need; pt_need->flag != 0; pt_need++, combi|=pt_need->flag)
  19. {
  20.    for (i=0; i < 3; i++)
  21.        if (de[i] == pt_need->value) flag|=pt_need->flag;
  22. }
  23. printf("%s\n", (flag == combi)?"gagné" :"perdu" );


Message édité par Sve@r le 30-06-2013 à 15:35:43

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed