Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme d'affichage avec la fonction Color !

Sujet résolu
    1 novembre 2019 à 23:48:28

    Bonsoir,

    pour mon projet d'informatique, je dois coder un jeux dont le but est d'aligner des tuiles ayant des symboles de formes ou de couleurs identiques (mais pas les deux) de façon à réaliser des combinaisons rapportant un maximum de points.. Et pour cela j'utilise la fonction Color() (ci-dessous) :

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include "Project.h"
    #include <time.h>
    
    void Color(int couleurDuTexte,int couleurDeFond)
    {
        HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
    }



    cependant lorsque je l'appelle dans ma fonction d'affichage (ci-dessous): 

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include "Project.h"
    #include <time.h>
    
    
    void affiche_main_joueur1(struct joueur tab_joueur[])
    {
        int couleur = 0;
        int *p_couleur = &couleur;
        int i = 0;
        colorToInt_v2(tab_joueur, p_couleur);
        gotoligcol(7,70);
        printf("Votre main : \n");
        gotoligcol(9,70);
            for (i = 0; i< 6; i++)
            {
                switch(couleur)
                {
                    case 1 :
                    Color(12,0);
                    printf("%d-%c   ", i,shapeToChar(tab_joueur[0].main_joeur[i].shape));
                    break;
    
                    case 2 :
                        Color(3,0);
                        printf("%d-%c   ", i,shapeToChar(tab_joueur[0].main_joeur[i].shape));
                    break;
    
                    case 3 :
                        Color(6,0);
                        printf("%d-%c   ", i,shapeToChar(tab_joueur[0].main_joeur[i].shape));
                    break;
    
                    case 4 :
                        Color(6,0);
                        printf("%d-%c   ", i,shapeToChar(tab_joueur[0].main_joeur[i].shape));
                    break;
    
                    case 5 :
                        Color(13,0);
                        printf("%d-%c   ", i,shapeToChar(tab_joueur[0].main_joeur[i].shape));
                    break;
    
                    case 6 :
                        Color(14,0);
                        printf("%d-%c   ", i,shapeToChar(tab_joueur[0].main_joeur[i].shape));
                    break;
    
                    case 7 :
                        printf("%d-%c   ", i,shapeToChar(tab_joueur[0].main_joeur[i].shape));
                    break;
                }
    
            }
    }



    Qui est censée afficher la main du joueur en couleur (12-rouge 3-turquoise 6-vert 13-violet 14-jaune 15-blanc), la main du joueur est affiché en blanc :

    Pourtant lorsque j'utilise la fonction color() dans un test.c elle fonctionne très bien.

    Je cherche depuis un bon moment et je ne trouve pas l'erreur...

    Pourriez-vous m'aider svp !

    merci d'avance!

    -
    Edité par ValentinDavis 1 novembre 2019 à 23:59:13

    • Partager sur Facebook
    • Partager sur Twitter
      2 novembre 2019 à 5:48:32

      Salut,

      Peut-être que ta variable couleur ne correspond a aucun 'case' dans ton 'switch'

      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2019 à 9:24:09

        Bonjour,

        j'ai bien vérifié et la variable couleur correspond à un des 'case' du 'switch' à chaque fois vu qu'elle affiche l'élément de la main du joueur quand meme :(

        • Partager sur Facebook
        • Partager sur Twitter
          2 novembre 2019 à 12:39:54

          Bonjour,

          Je ne connais pas SetConsoleTextAttribute, une lecture de 3s de sa doc dit "Sets the attributes of characters written to the console screen buffer by the WriteFile or WriteConsole function, or echoed by the ReadFile or ReadConsole function. This function affects text written after the function call." et toi tu utilises printf pour tes écritures.
          J'espère que ça t'aidera.

          • Partager sur Facebook
          • Partager sur Twitter

          En recherche d'emploi.

            2 novembre 2019 à 13:53:09

            printf utilisera WriteFile ou WriteConsole ...
            • Partager sur Facebook
            • Partager sur Twitter
              2 novembre 2019 à 18:55:57

              Après vérification , c’était une erreur d’algorithmie  !

              merci pour votre aide !

              • Partager sur Facebook
              • Partager sur Twitter

              Probléme d'affichage avec la fonction Color !

              × 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