Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Affichage pendu - tableau de char


Sujet :

C

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2005
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Affichage pendu - tableau de char
    Bonjour Tous !

    Bon, je pose ça ici car ça me semble être le bon endroit...
    On m'a refilé un jeu de pendu à coder, je m'en suis bien sorti mais je bloque sur un truc : l'affichage du pendu !!!

    Pour cela on nous a fourni un tableau (de tableau) de chaînes de caractères et il faut implémenter la fonction qui sera ensuite appelée dans le main pour afficher le pendu.
    Sauf que je ne sais pas du tout comment on manipule ce truc là

    Voici le tableau en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
     
    #define nbStep 7
    #define height 12
    #define width 15
     
    char pendu[nbStep][height][width] =
    {
        "  _______     ",
        " |       |    ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
     
     
        "  _______     ",
        " |       |    ",
        " |       _    ",
        " |      / \\  ",
        " |      \\_/  ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
     
     
        "  _______     ",
        " |       |    ",
        " |       _    ",
        " |      / \\  ",
        " |      \\_/  ",
        " |      _|_   ",
        " |      | |   ",
        " |      |_|   ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
     
     
        "  _______     ",
        " |       |    ",
        " |       _    ",
        " |      / \\  ",
        " |      \\_/  ",
        " |      _|_   ",
        " |     /| |   ",
        " |    / |_|   ",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
     
     
        "  _______     ",
        " |       |    ",
        " |       _    ",
        " |      / \\  ",
        " |      \\_/  ",
        " |      _|_   ",
        " |     /| |\\ ",
        " |    / |_| \\",
        " |            ",
        " |            ",
        " |            ",
        " |            ",
     
     
        "  _______     ",
        " |       |    ",
        " |       _    ",
        " |      / \\  ",
        " |      \\_/  ",
        " |      _|_   ",
        " |     /| |\\ ",
        " |    / |_| \\",
        " |       ^    ",
        " |      /     ",
        " |     /      ",
        " |            ",
     
     
        "  _______     ",
        " |       |    ",
        " |       _    ",
        " |      / \\  ",
        " |      \\_/  ",
        " |      _|_   ",
        " |     /| |\\ ",
        " |    / |_| \\",
        " |       ^    ",
        " |      / \\  ",
        " |     /   \\ ",
        " |            "
    };
    Je suppose que selon le coup joué on veut effectuer renvoi des "lignes" du tableau correspondant à l'état du pendu.
    Renvoi de 12 lignes à partir de la première ligne correspondant au coup en cours (sans oublier le \n)
    La "largeur" de nombre pendu restant toujours 15.

    Bref, en tout cas mon pendu je ne sais pas comment l'afficher !
    Du coup toute aide, remarque ou commentaire est le bienvenu

    Merci les gens !!!!

  2. #2
    Membre expérimenté
    Avatar de emixam16
    Homme Profil pro
    Doctorant en sécurité
    Inscrit en
    juin 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Doctorant en sécurité

    Informations forums :
    Inscription : juin 2013
    Messages : 310
    Points : 1 577
    Points
    1 577
    Par défaut
    Bonjour,

    Pour résoudre ton problème tu dois te poser les questions (simples!) suivantes.
    -> Comment afficher une ligne. Exemple: quelle ligne de code dois-je utiliser si je veux afficher la 2 ligne de la 3 ème situation?
    -> Comment afficher la situation complète c.-à-d la 2ème situation.


    Évidemment tu n'es pas sur tu peux faire un petit programme de test pour vérifier.

    NOTE: c'est un détail mais je trouve que c'est une idée très moyenne de déclarer comme ça. C'est extrêmement dépendant des paramètres de ton tableau. Par exemple si une ligne passe à une largeur de 8 ça va décaler tous les autres éléments. Il aurait été bien plus juste et propre de le déclarer comme pendu={ {"val1", "val2"}, {"val1", "val2"}, ...};. Mais c'est la faute de ton prof pas la tienne donc ne t'occupe pas de ça.

  3. #3
    Membre éprouvé Avatar de Ngork
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 144
    Points : 1 063
    Points
    1 063
    Par défaut
    Je te réponds par l'exemple, à toi d'adapter à un code plus générique.
    Exemple d'un affichage de l'état final, soit la figure n°7 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include <stdio.h>
     
    int main()
    {
      int s = 7;
      int h = 0;
     
      for (; h < height; h++)
        {
          printf("%s\n", pendu[s-1][h]);
        }
     
      return 0;
    }
    Nom : capture.jpg
Affichages : 67
Taille : 18,5 Ko

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2005
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merciiiiiii à vous deux !!!!
    J'avoue que je ne suis pas certaine d'avoir bien plus compris le bazar que précédemment mais j'arrive à afficher mon pendu, j'ai même ajouté un step !
    Ce sont ces fameux steps que je ne comprends pas bien. Pour être plus précise, je crois que je ne comprends pas la déclaration du tableau de tableau de char.
    Bref, il faudrait que je m'y penche à nouveau mais on attaque java maintenant donc je vais vous solliciter sur d'autre sujets
    Nom : Capture du 2020-02-04 12-17-39.png
Affichages : 65
Taille : 3,8 Ko

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    7 825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 7 825
    Points : 21 397
    Points
    21 397
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par viry0ne Voir le message
    Ce sont ces fameux steps que je ne comprends pas bien. Pour être plus précise, je crois que je ne comprends pas la déclaration du tableau de tableau de char.
    En fait, ce n'est pas un tableau de tableau de char... mais un tableau de tableau de tableau de char. Bref un truc 3D.
    Toutefois il a été écrit comme un truc 1D et c'est probablement ça qui te gêne. On a le droit de faire ça quand l'ensemble des éléments colle parfaitement au schéma du tableau (car il faut que tu saches que quelle que soit les dimensions d'un tableau, en mémoire ça reste du 1D).
    Voici l'écriture exacte telle qu'elle aurait dû être si on veut être rigoureux

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    char pendu[nbStep][height][width] =
    {
    	{
    		"  _______	 ",
    		" |	   |	",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    	},
    	{
    		"  _______	 ",
    		" |	   |	",
    		" |	   _	",
    		" |	  / \\  ",
    		" |	  \\_/  ",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    	},
    	{
    		"  _______	 ",
    		" |	   |	",
    		" |	   _	",
    		" |	  / \\  ",
    		" |	  \\_/  ",
    		" |	  _|_   ",
    		" |	  | |   ",
    		" |	  |_|   ",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    	},
    	{
    		"  _______	 ",
    		" |	   |	",
    		" |	   _	",
    		" |	  / \\  ",
    		" |	  \\_/  ",
    		" |	  _|_   ",
    		" |	 /| |   ",
    		" |	/ |_|   ",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    	},
    	{
    		"  _______	 ",
    		" |	   |	",
    		" |	   _	",
    		" |	  / \\  ",
    		" |	  \\_/  ",
    		" |	  _|_   ",
    		" |	 /| |\\ ",
    		" |	/ |_| \\",
    		" |			",
    		" |			",
    		" |			",
    		" |			",
    	},
    	{
    		"  _______	 ",
    		" |	   |	",
    		" |	   _	",
    		" |	  / \\  ",
    		" |	  \\_/  ",
    		" |	  _|_   ",
    		" |	 /| |\\ ",
    		" |	/ |_| \\",
    		" |	   ^	",
    		" |	  /	 ",
    		" |	 /	  ",
    		" |			",
    	},
    	{
    		"  _______	 ",
    		" |	   |	",
    		" |	   _	",
    		" |	  / \\  ",
    		" |	  \\_/  ",
    		" |	  _|_   ",
    		" |	 /| |\\ ",
    		" |	/ |_| \\",
    		" |	   ^	",
    		" |	  / \\  ",
    		" |	 /   \\ ",
    		" |			"
    	},
    };
    Et c'est bien du 3D car le compilo remplace une string (ex "123") par un tableau (ex {'1', '2', '3', '\0'}).

    Citation Envoyé par viry0ne Voir le message
    mais on attaque java maintenant donc je vais vous solliciter sur d'autre sujets
    Ce ne sera pas nous
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2005
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merci pour les explications !
    C'est vrai que quand on débute, les "raccourcis" que peuvent prendre les initiés déstabilisent
    J'avais bien compris que c'était un truc 3D mais j'avais vraiment du mal à me le représenter. C'est plus clair en l'écrivant de façon explicite !

    Citation Envoyé par Sve@r Voir le message
    Bonjour
    Ce ne sera pas nous
    ça c'est pô grave, j'vous aime bien toujours quand même et je crois (mais cela reste à confirmer), que je préfère le C au java...
    donc je reviendrais p'têt par ici :p

  7. #7
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    3 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 3 229
    Points : 7 262
    Points
    7 262
    Par défaut
    C'est surtout trop compliqué pour ce qu'il y a à faire
    Si tu utilises des chaînes de caractères multilignes, tu as un simple tableau


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    #include <stdio.h>
    #include <stdlib.h>
     
    #define G_NB_STEPS 7
     
     
    char* tab_anims[G_NB_STEPS] = {
    "  _______     \n"\
    " |       |    \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n",
     
    "  _______     \n"\
    " |       |    \n"\
    " |       _    \n"\
    " |      / \\  \n"\
    " |      \\_/  \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n",
     
    "  _______     \n"\
    " |       |    \n"\
    " |       _    \n"\
    " |      / \\  \n"\
    " |      \\_/  \n"\
    " |      _|_   \n"\
    " |      | |   \n"\
    " |      |_|   \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n",
     
    "  _______     \n"\
    " |       |    \n"\
    " |       _    \n"\
    " |      / \\  \n"\
    " |      \\_/  \n"\
    " |      _|_   \n"\
    " |     /| |   \n"\
    " |    / |_|   \n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n",
     
    "  _______     \n"\
    " |       |    \n"\
    " |       _    \n"\
    " |      / \\  \n"\
    " |      \\_/  \n"\
    " |      _|_   \n"\
    " |     /| |\\ \n"\
    " |    / |_| \\\n"\
    " |            \n"\
    " |            \n"\
    " |            \n"\
    " |            \n",
     
    "  _______     \n"\
    " |       |    \n"\
    " |       _    \n"\
    " |      / \\  \n"\
    " |      \\_/  \n"\
    " |      _|_   \n"\
    " |     /| |\\ \n"\
    " |    / |_| \\\n"\
    " |       ^    \n"\
    " |      /     \n"\
    " |     /      \n"\
    " |            \n",
     
    "  _______     \n"\
    " |       |    \n"\
    " |       _    \n"\
    " |      / \\  \n"\
    " |      \\_/  \n"\
    " |      _|_   \n"\
    " |     /| |\\ \n"\
    " |    / |_| \\\n"\
    " |       ^    \n"\
    " |      / \\  \n"\
    " |     /   \\ \n"\
    " |            \n"
    };
     
     
    int main(int argc, char* argv[])
    {
        size_t step;
     
        for (step=0; step < G_NB_STEPS; ++step) {
            printf("Animation %lu:\n%s\n", (step + 1), tab_anims[step]);
        }
     
     
        return EXIT_SUCCESS;
    }

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    7 825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 7 825
    Points : 21 397
    Points
    21 397
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    Si tu utilises des chaînes de caractères multilignes, tu as un simple tableau
    Bien vu Mais comme je pense qu'il s'agit d'un TP de manipulations de tableaux multi-dimensionnels...

    Sinon peut-être lui expliquer comment tu as fait...

    @viry0ne: là foetus crée chaque step (chaque image) comme une seule super énorme ligne contenant l'image entière composée de '\n' pour que ces lignes forment une image correcte lors de l'affichage à l'écran.
    Et pour que son code soit lisible, il découpe dans le source les lignes de chaque image en protégeant chaque fin de ligne par un backslash ce qui inhibe le <return> terminant la ligne. Ainsi le compilo ne voit pas la fin de ligne (ce qui est pour lui une fin d'instruction) et il ne voit donc qu'une seule ligne contenant toute l'image.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2005
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    A priori, l'idée c'était juste de mettre un pendu graphique pour plus de fun...
    Je reste pragmatique et je passe à la suite (donc java).
    Encore merci @ la communauté pour vos explications !
    Vous devriez demander un % à mes profs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage de tableau char
    Par Phlogos dans le forum Débuter
    Réponses: 5
    Dernier message: 24/06/2010, 08h08
  2. Ansistring et tableau de char
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/12/2004, 12h51
  3. affichage de tableau dynamique
    Par EJ dans le forum XMLRAD
    Réponses: 12
    Dernier message: 04/06/2004, 11h58
  4. Adresse d'un tableau de char
    Par Trap D dans le forum C
    Réponses: 8
    Dernier message: 23/12/2003, 13h02
  5. Réponses: 4
    Dernier message: 10/10/2003, 19h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo