Partage
  • Partager sur Facebook
  • Partager sur Twitter

Donner une valeur à un char

Pour un jeux d'OXO

    4 décembre 2005 à 13:01:59

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[]) {
      int tempcase=0;
      char case01[2], case02[2], case03[2], case04[2], case05[2], case06[2], case07[2], case08[2], case09[2];
      case01 = "-";
      case02 = "-";
      case03 = "-";
      case04 = "-";
      case05 = "-";
      case06 = "-";
      case07 = "-";
      case08 = "-";
      case09 = "-"
      while (1) {
        system("CLS");
        printf("%s | %s | %s\n%s | %s | %s\n%s | %s | %s", case01, case02, case03, case04, case05, case06, case07, case08, case09);     
        printf("\nQue veut tu jouer ? ");
        scanf("%d", &tempcase);
        if (tempcase >= 1 && tempcase <= 9) {
          if (tempcase == 1) { case01 = "x"; }
          if (tempcase == 2) { case02 = "x"; }
          if (tempcase == 3) { case03 = "x"; }
          if (tempcase == 4) { case04 = "x"; }
          if (tempcase == 5) { case05 = "x"; }
          if (tempcase == 6) { case06 = "x"; }
          if (tempcase == 7) { case07 = "x"; }
          if (tempcase == 8) { case08 = "x"; }
          if (tempcase == 9) { case09 = "x"; }
        } else {
          printf("\nMauvais nombre");
          system("PAUSE");       
        }
      }
      printf("Fin du jeux !");
      system("PAUSE");     
      return 0;
    }


    Bonjour, voici mon beau code...

    J'essaie de faire un petit jeux de OXO mais j'en suis qu'au début là. Mais déjà des problèmes interviennent...

    "Incompatible type in assignment"

    J'ai ça pour presque toutes mes lignes...

    Quel est le problème ?
    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2005 à 13:37:27

      un boucle infini sans break à l'intérieur spa trop joli hein.
      çane marche pas parce qu'il faut entourer la valeur à affecter avec des ' et pas des "
      Pourquoi tu fait un tableau de deux chars? pour ton cas, il te suffit de faire 9 variables char, ou alors un tableau de 9 chars, ce qui serais plus pratique regarde:

      #include <stdio.h>
      #include <stdlib.h>

      int main(void)
      {
          int i, tempcase = 0;
          char case[9];
          for (i = 0; i < 9; ++i) {
              case[i] = '-';
          }
          while (1) {
              system("CLS");
              for (i = 0; i < 9; i += 3) {
                  printf("%s | %s | %s\n", case[i], case[i+1], case[i+2]);
              }
              printf("\nQue veut tu jouer ?\n");
              scanf("%d", &tempcase);
              if (tempcase >= 1 && tempcase <= 9) {
                  case[tempcase-1] = 'x';
              } else {
                  printf("\nMauvais nombre");     
              }
          }
          printf("Fin du jeux !")
          return 0;
      }


      mon code est pas sur mais c'est dans l'idée :p
      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2005 à 16:05:39

        Merci, j'ai du usé d'autre stratagème en plus des tiens :)
        Mais je viens de m'appercevoir que l'on utilisait mal les scanf(); o_O

        Citation : http://mapage.noos.fr/emdel/notes.htm#saisie

        scanf()

        Malgré ce que l'on constate dans l'abondante littérature consacrée à l'initiation au langage C, l'utilisation de scanf() n'est pas adaptée.

        En effet, le 'f' de scanf() est là pour nous rappeler que l'entrée doit être formattée (formatted), ce qui n'est évidemment pas le cas avec un opérateur humain qui peut entrer n'importe quoi. D'autre part, scanf() gère difficilement le '\n', ce qui entraine des comportements abérrants dans les saisies si on ne prend pas certaines précautions d'usage.

        L'utilisation correcte et sûre de scanf() est complexe, et n'est pas à la porté d'un débutant (ni même à celle de la plupart des programmeurs expérimentés).

        fgets()

        Cette fonction est parfaitement adaptée à la saisie d'une ligne, (même de 1 caractère). Son usage est recommandé.

        Si il faut saisir une valeur numérique, celle-ci sera d'abord saisie sous forme de ligne, puis traduite par la fonction appropriée (strtol(), strtoul(), strtod()) ou sscanf() avec le filtre approprié :

        #include <stdio.h>
        #include <stdlib.h>

        int main(void) {
           int ret;
           char temp[20];

           do {
              char saisie[20];

              printf("Entrez un nombre : ");
              fflush (stdout);

              fgets (saisie, sizeof saisie, stdin);

              /* Filtrage des caracteres (entier decimal)
               * Nota : la saisie s'arrete a la premiere erreur.
               * Ce qui est saisi avant est considere comme valide.
               *
               * "123a" -> "123" : ret = 1
               *
               * "a123" -> ""    : ret = 0
               */

              ret = sscanf (saisie, "%[0-9-]s", temp);
           }
           while (ret != 1) {
              long n = strtol (temp, NULL, 10);

              printf ("La chaine est '%s', soit %ld\n", temp, n);
           }
           return 0;
        }




        Mais bon, comme je n'en suis pas encore à ce stade là, je me contente de mon petit scanf(); et puis mon code marche pour l'instant ^^

        #include <stdio.h>
        #include <stdlib.h>

        int main(int argc, char *argv[]) {
          int tempcase=0, tempsigne=0;
          char case01[5], case02[5], case03[5], case04[5], case05[5], case06[5], case07[5], case08[5], case09[5];
          char *str1 = "-", *str2 = "X", *str3 = "O";
          strcpy(case01, str1);
          strcpy(case02, str1);
          strcpy(case03, str1);
          strcpy(case04, str1);
          strcpy(case05, str1);
          strcpy(case06, str1);
          strcpy(case07, str1);
          strcpy(case08, str1);
          strcpy(case09, str1);
          while (1) {
            system("CLS");
            printf("-------------\n| %s | %s | %s |\n| %s | %s | %s |\n| %s | %s | %s |\n-------------", case01, case02, case03, case04, case05, case06, case07, case08, case09);     
            printf("\nQuel case veux tu jouer ? ");
            scanf("%d", &tempcase);
            printf("\nQuel signe veux tu choisir ? ");
            scanf("%d", &tempsigne);
            if (tempcase >= 1 && tempcase <= 9 && tempsigne >= 1 && tempsigne <= 2) {
               switch (tempcase) {
                 case 1 :
                   if (tempsigne == 1) { strcpy(case01, str2); }
                   if (tempsigne == 2) { strcpy(case01, str3); }
                   break;
                 case 2 :
                   if (tempsigne == 1) { strcpy(case02, str2); }
                   if (tempsigne == 2) { strcpy(case02, str3); }
                   break;
                 case 3 :
                   if (tempsigne == 1) { strcpy(case03, str2); }
                   if (tempsigne == 2) { strcpy(case03, str3); }
                   break;
                 case 4 :
                   if (tempsigne == 1) { strcpy(case04, str2); }
                   if (tempsigne == 2) { strcpy(case04, str3); }
                   break;
                 case 5 :
                   if (tempsigne == 1) { strcpy(case05, str2); }
                   if (tempsigne == 2) { strcpy(case05, str3); }
                   break;
                 case 6 :
                   if (tempsigne == 1) { strcpy(case06, str2); }
                   if (tempsigne == 2) { strcpy(case06, str3); }
                   break;
                 case 7 :
                   if (tempsigne == 1) { strcpy(case07, str2); }
                   if (tempsigne == 2) { strcpy(case07, str3); }
                   break;
                 case 8 :
                   if (tempsigne == 1) { strcpy(case08, str2); }
                   if (tempsigne == 2) { strcpy(case08, str3); }
                   break;
                 case 9 :
                   if (tempsigne == 1) { strcpy(case09, str2); }
                   if (tempsigne == 2) { strcpy(case09, str3); }
                   break;       
               }
            } else {
              printf("\nMauvais nombre");
              system("PAUSE");       
            }
          }
          printf("Fin du jeux !");
          system("PAUSE");     
          return 0;
        }
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2005 à 16:29:01

          Sans blague, je le dis depuis perpette que scanf c'est le mal mais personne ne m'écoute...
          • Partager sur Facebook
          • Partager sur Twitter
            4 décembre 2005 à 21:46:34

            rz0 ou le messie incompris... :p
            • Partager sur Facebook
            • Partager sur Twitter

            Donner une valeur à un char

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown