IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Comment positionner le curseur dans une case d'un tableau à deux dimensions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Par défaut Comment positionner le curseur dans une case d'un tableau à deux dimensions
    Salut, tout est dans le titre... En gros il faut que l'utilisateur rentre la colonne, la ligne et la direction (haut, bas, gauche, droite) et ensuite je dois afficher le pion sur la case sélectionnée.
    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
     
     
    void player1(char tab1[5][5],char tab2[5][5]) //spgrm placement du joeur 1
    {
        int ver,hor;    ///variables qui désignes la ligne horizontale et veriticale du tab1
        char orientation; /// variable qui permet de metttre l'orientation du pion
        printf("saisir coordonnees case\n");
        scanf("%d ",&ver);
        scanf("%d",&hor);
        scanf("%c",&tab1[ver][hor]); /// je met ça car je sais pas comment mettre le E d'office dans ces coordonées là
        printf("choisir direction \n");
        scanf("%c",orientation);
        scanf("%c",&tab2[ver][hor]); /// je met l'orientation souhaitée dans le tableau
     
    }
    Merci d'avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Un_débutant Voir le message
    et ensuite je dois afficher le pion sur la case sélectionnée.
    Tout est dans cette phrase. Comment gères-tu l'affichage de ton jeu ? Tu utilises une librairie graphique ? Tu affiches en ascii-art comme par exemple
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    +---+---+---+
    |   | O |   |
    +---+---+---+
    | X |   |   |
    +---+---+---+
    |   |   | O |
    +---+---+---+

    ???

    Si c'est ça il te faut effacer tout le jeu et le réafficher à chaque changement.
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Par défaut
    Bonjour ! Déjà merci de me filer un coup de main, c'est gentil. Ouais c'est du ascii-art ( je savais même pas que ça existait ^^). Je te mets tout mon code pour que tu puisses voir à quoi ça ressemble :
    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
    112
    113
    114
    115
    116
    117
    118
    119
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
     
    void board (char tab1[5][5],char tab2[5][5],char tabE[5],char tabR[5]);
    void player1();
    void player2();
    void montagne();
     
     
    void menu()
    {
        int choix, solo;
     
        printf("Que voulez vous faire ?\n1. Jouer\n2. Lire les regles\n3. Quitter\n");
        scanf("%d", &choix);
        while ((choix != 1) && (choix != 2) && (choix !=3 ))
        {
            printf("Erreur, veuillez recommencer\n");
            scanf("%d", &choix);
        }
        if (choix == 1)
        {
            printf("Jouer a deux ou contre l'ordinateur ?\n");
            scanf("%d", &solo);
            while ((choix != 1) && (choix != 2))
            {
                printf("Erreur\n");
                scanf("%d", &solo);
     
            }
            if (solo == 1)
            {
                return 0;
            }
            if (solo == 2)
            {
                return 0;
            }
        }
     
        if (choix == 2)
        {
            printf("Chaque joueur choisit son animal. Les joueurs joueront a tour de role. Au debut du jeu les animaux sont disposes a l'exterieur du plateau et les montagnes au centre du plateau. Chaque case du plateau est reperee par ses coordonnees :\n ligne A a E, colonne 1 a 5. Les elephants blancs, animaux sacres dans le royaume de SIAM commenceront a jouer.\n");
     
        }
     
        if (choix == 3)
        {
            return 0;
        }
     
    }
    void player1(char tab1[5][5],char tab2[5][5]) //spgrm placement du joeur 1
    {
        int ver,hor;    ///variables qui désignes la ligne horizontale et veriticale du tab1
        char orientation; /// variable qui permet de metttre l'orientation du pion
        printf("saisir coordonnees case\n");
        scanf("%d ",&ver);
        scanf("%d",&hor);
        scanf("%c",&tab1[ver][hor]); /// je met ça car je sais pas comment mettre le E d'office dans ces coordonées là
        printf("choisir direction \n");
        scanf("%c",orientation);
        scanf("%c",&tab2[ver][hor]); /// je met l'orientation souhaitée dans le tableau
     
    }
     
    void board (char tab1[5][5],char tab2[5][5],char tabE[5],char tabR[5])     //sous programme pour afficher le tableau de jeu
    {
        int a=0;
        int i=0;
        int j=0;
        int h=0;
     
        printf("          +--+--+--+--+--+\n          |1 |2 |3 |4 |5 |\n          +--+--+--+--+--+\n");
        printf("          ");
        for(a=0; a<5; a++)
        {
            printf("|%c ",tabE[a]);
        }
        printf("|\n");
        printf("          +--+--+--+--+--+\n\n");
        for (i=0; i<5; i++)
        {
            printf("+--+--+   ");
            for (j=0; j<5; j++)
            {
     
                printf("+--");
            }
            printf("+\n");
            printf("|%c |%c |",(65+i),tabR[i]);
            printf("   ");
     
            for (h=0; h<5; h++)
            {
                printf("|%c%c",tab1[i][h],tab2[i][h]);
     
            }
            printf("|\n");
     
     
        }
        printf("+--+--+   +--+--+--+--+--+\n");
    }
     
    int main()
    {
        char tab1[5][5]= {{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '}};
        char tab2[5][5]= {{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '},{' ',' ',' ',' ',' '}};
        char tabE[5]= {'E','E','E','E','E'};
        char tabR[5]= {'R','R','R','R','R'};
        board(tab1,tab2,tabE,tabR);
        menu();
     
        return 0;
    }
    Du coup si j'ai bien compris, je dois faire un sous programme qui va me ré-afficher le tableau après les changements, mais je sais pas comment appliquer les changements en gros ^^.

    Si t'as d'autres conseils sur le code je suis preneur (Si je me suis compliqué la vie en faisant ça ou si écrire d'une autre manière c'est mieux ou quoi que ce soit qui peut être amélioré tu me dis ! )
    Merci d'avance

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Un_débutant Voir le message
    Du coup si j'ai bien compris, je dois faire un sous programme qui va me ré-afficher le tableau après les changements, mais je sais pas comment appliquer les changements en gros ^^.
    Déjà il faut dissocier "jeu" et "affichage du jeu".

    Le jeu c'est un plateau avec des valeurs comme par exemple 0 (vide), 1 (pion du joueur 1), 2 (pion du joueur 2), etc. Si chaque joueur peut avoir plusieurs pions alors ça peut-être 0x11 (pion 1 du joueur 1), 0x12 (pion 2 du joueur 1), 0x13 (pion 3 du joueur 1), 0x21 (pion 1 du joueur 2), 0x22 (pion 2 du joueur 2), 0x23 (pion 3 du joueur 2), etc (16 pions différents possibles). Et avec un jeu de masques de bits tu peux extraire d'un côté le joueur, de l'autre côté le pion.

    L'affichage, c'est traduire ces valeurs numériques à l'écran.

    De cette manière, tu pourras coder l'algorighme de réflexion du jeu sans te préoccuper de l'affichage et inversement. C'est d'ailleurs le point de départ de la philosophie MVC (Modèle, Vue, Controleur). Le Modèle c'est le stockage de l'info (bdd, fichier, etc). La Vue c'est la saisie et l'affichage de l'info à l'écran et le Controleur c'est la gestion de l'info et les algorithmes pour l'utiliser afin de produire des résultats. En séparant ces 3 entités dans des fonctions dédiées, ça te permet de concentrer chaque fonction sur son but sans qu'elle se préoccupe des autres, et pouvoir aussi changer de techno (remplacer par exemple l'ascii-art par une vraie GUI).

    Ainsi, quand un pion se déplace, la case 0x12 (pion 2 du joueur 1) peut devenir 0x00 (case vide) et la case à côté peut passer de 0x00 (vide) à 0x12. Ensuite, tu réaffiches le jeu en prenant en compte la valeur des cases.

    Citation Envoyé par Un_débutant Voir le message
    Si t'as d'autres conseils sur le code je suis preneur
    Déjà virer les warnings. Une fonction "void" (comme menu()) ne peut pas retourner de valeur.
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Je rajouterais , c'est étonnant que le compilateur râle pas parce que tu déclare ta fonction comme ceci :
    Alors que ta fonction est écrite comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void player1(char tab1[5][5],char tab2[5][5]) //spgrm placement du joeur 1
    Ensuite je déconseille les tableaux à deux dimensions.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Par défaut
    Tout d'abord merci pour vos réponses. Sve@r, ce que tu m'expliques a l'air un peu compliqué... Dans ce cas comment je fais pour différencier le Modèle, la Vue et le Controler ?
    Et puis si je comprends bien, le controler ce sera là qu'il y aura toutes les instructions au niveau du changement d'une valeur du tableau suite au déplacement d'un pion ? Si oui, c'est surtout cette partie là qui m'intéresse et aussi, après modifications, j'ai juste à ré afficher le même tableau ?
    Merci d'avance !

    EDIT : Pour les void, je met ça en attendant de trouver la solution

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Un_débutant Voir le message
    Dans ce cas comment je fais pour différencier le Modèle, la Vue et le Controler ?
    Tu peux nommer tes fonctions "cXXX" ou "mXXX" ou "vXXX"...

    Citation Envoyé par Un_débutant Voir le message
    Et puis si je comprends bien, le controler ce sera là qu'il y aura toutes les instructions au niveau du changement d'une valeur du tableau suite au déplacement d'un pion ?
    Exacement. Il s'occupe de mettre les bonnes valeurs dans les bonnes cases du tableau. Et si c'est un jeu contre une AI alors il calcule la/les réponses possibles.

    Citation Envoyé par Un_débutant Voir le message
    Si oui, c'est surtout cette partie là qui m'intéresse et aussi, après modifications, j'ai juste à ré afficher le même tableau ?
    Ben oui. C'est ça l'avantage. Ce que tu affiches n'est qu'une "Vue" du tableau. Si par exemple la case contient "1" tu affiches "X" et si elle contient "2" tu affiches "O" (exemple du morpion). Tu peux même proposer au joueur de choisir les symboles qu'il veut voir.

    Citation Envoyé par Un_débutant Voir le message
    Pour les void, je met ça en attendant de trouver la solution
    Si elle retourne un "int" alors elle est "int".
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

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