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

Langage C++ Discussion :

Est ce que ce syntaxe est juste ?( a propos des tableaux)


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Developpeur C++, lycéen.
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Developpeur C++, lycéen.

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Est ce que ce syntaxe est juste ?( a propos des tableaux)
    Salut,
    Je suis entrain de créer une Tic-Tac-Toe PLAYER1 vs. PLAYER2, j'ai presque finis le code, mais il reste a savoir si cette partie est juste :

    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
    const int taille = 9;//Taille du tableau represente la grille du jeu 3x3
    char actions1[ taille]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};//va contenir les carreaux remplits par PLAYER1
    char actions2[ taille]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};//va contenir les carreaux remplits par PLAYER2
    char grillePrincipale[ taille]={  1, 2, 3, 4, 5, 6, 7, 8, 9};//va etre transmis a l'ecran, elle va contenir X et O et les nombres non-remplis
    .
    .
    .
    //aprés quelques changements dans les cases de ces trois tableaux
    .
    .
    .
     
    if( condition) //pour réintialiser les icones apres un redemarrage de la partie, condition definie la reintialisation de la partie.
    {
        actions1[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};
        actions2[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};
        grillePrincipale[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};
    }
    En gros, je veux savoir si on peut utiliser la syntaxe raccourcis: tableau[]={valeur1, valeur2, valeur3,...} une deuxieme fois pour changer les valeurs dans les memes tableaux actions1, actions2 et grillePrincipale

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Salut,

    non tu ne peux pas.

    Mais une telle question m'étonne, car elle veut peut-être dire que tu n'as pas encore essayé de compiler ton code. Et crois-moi, si c'est le cas, c'est pas le seul problème que tu vas avoir

    Par contre au niveau du design pourquoi ne gardes-tu simplement pas que une grille ? Et dans ce cas, tu choisis des codes adaptés pour représenté vide, joueur 1 et joueur 2.

    Et lors de ton initialisation, tu remplis de 1 à 9, est-ce que ça a un quelconque sens ?

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    100% d'accord avec Trademark. Pour savoir si une syntaxe est correcte, le meilleur allié est souvent le compilateur. Tu en trouveras dans la page consacrée pour en installer un sur ton poste. Sinon il existe aussi de compilateurs en ligne.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Developpeur C++, lycéen.
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Developpeur C++, lycéen.

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Oui c'est vrai, je me suis rendu compte que ce syntaxe n'est pas mis pour un seul but, celui de l'intialisation, mais aussi pour la taille du tableau, et puisque la taille du tableau est constante durant toute l'execution, alors le C++ refuse de réintialiser le tableau une deuxieme fois avec ce syntaxe.
    En ce qui concerne la compilation du code, j'ai essayé durant l'ecriture du code que je ne veux surtout pas des fautes, alors je me lance dans ce defi, j'ai deja lis et relis le code plusieurs fois pour ne pas avoir des fautes, cela va m'aider un peu plus tard dans mes projets...
    En ce qui concerne le design du jeu, j'ai essayé d'imiter cette structure :
    http://www.java2s.com/Code/CImages/TicTacToe.PNG
    en demandant au joueur de choisir le nombre de carreau, apres j'examine ce nombre (s'il n'est pas superieur a 9, s'il n'est pas inferieur ou egal a zero...), puis j'assigne au tableau du PLAYER 1 le X, et ainsi de suite...
    J'essayerais de partager avec vous le code source.
    Merci encore une fois TradeMark et 3DArchi...

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Pour les tableaux, en C++ on préfèrera std::array pour les tableaux statiques et std::vector pour les tableaux dynamiques.

    A noter que si tu as un compilateur récent supportant les dernières nouveautés C++11, les listes d'initialisations sont un support pour ce que tu souhaites faire :
    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
    #include <vector>
    #include <array>
     
    #include <iostream>
    #include <algorithm>
    #include <iterator>
     
    int main()
    {
        static const int SIZE=9;
        std::array<char,SIZE> action1={1,2,3,4,5,6,7,8,9};
        std::vector<char> action2={1,2,3,4,5,6,7,8,9};
     
     
        std::copy(std::begin(action1),std::end(action1),std::ostream_iterator<int>(std::cout," "));
        std::cout<<std::endl;
     
        std::copy(std::begin(action2),std::end(action2),std::ostream_iterator<int>(std::cout," "));
        std::cout<<std::endl;
     
     
        action1 =  std::array<char,SIZE>{9,8,7,6,5,4,3,2,1};
        action2 =  std::vector<char>{9,8,7,6,5,4,3,2,1};
     
        std::copy(std::begin(action1),std::end(action1),std::ostream_iterator<int>(std::cout," "));
        std::cout<<std::endl;
     
        std::copy(std::begin(action2),std::end(action2),std::ostream_iterator<int>(std::cout," "));
        std::cout<<std::endl;
     
        return 0;
    }

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Developpeur C++, lycéen.
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Developpeur C++, lycéen.

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    3DArchi, merci encore une fois, mais je ne suis pas capable de lire ce que tu as ecrit ( je ne suis qu'un novice ), et voila ma solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if( condition)
    {
        for ( int subscript=0, intialisation=1; subscript<taille; subscript++, intialisation++)//raccourcis en utilisant for pour affecter les cases des trois tableaux de 0-8 par 1-9 successivement.
            {
                 actions1[subscript]=intialisation;
                 actions2[subscript]=intialisation;
                 grillePrincipale[subscript]=intialisation;
            }
    }
    Merci...

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    pourquoi ne pas faire du C++ et se cantonner à du C ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct Action { void Init(); };
    ...
    if (condition) myActions.Init();
    Sinon, si tu veux garder ta syntaxe C, je pense que memcpy ferait l'affaire.

    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
    const int taille = 9;//Taille du tableau represente la grille du jeu 3x3
    char actions1[ taille]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};//va contenir les carreaux remplits par PLAYER1
    char actions2[ taille]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};//va contenir les carreaux remplits par PLAYER2
    char grillePrincipale[ taille]={  1, 2, 3, 4, 5, 6, 7, 8, 9};//va etre transmis a l'ecran, elle va contenir X et O et les nombres non-remplis
    .
    .
    .
    //aprés quelques changements dans les cases de ces trois tableaux
    .
    .
    .
     
    if( condition) //pour réintialiser les icones apres un redemarrage de la partie, condition definie la reintialisation de la partie.
    {
        char actions1bis[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};
        char actions2bis[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};
        char grillePrincipalebis[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9};
        memcpy(actions1, actions1bis, sizeof(actions1));
        memcpy(actions2, actions2bis, sizeof(actions2));
        memcpy(grillePrincipale, grillePrincipalebis, sizeof(grillePrincipale));
    }
    M'enfin, utiliser une class et des méthodes d'init serait bien mieux.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 188
    Points : 17 136
    Points
    17 136
    Par défaut
    Par ailleurs, même sans utiliser les concepts du C++, le code que tu nous montres est d'un style étrange.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if( condition)
    {
        for ( int subscript=0, intialisation=1; subscript<taille; subscript++, intialisation++)//raccourcis en utilisant for pour affecter les cases des trois tableaux de 0-8 par 1-9 successivement.
            {
                 actions1[subscript]=intialisation;
                 actions2[subscript]=intialisation;
                 grillePrincipale[subscript]=intialisation;
            }
    }
    Plutot que deux variable, on utiliserai un peu d'arithmétique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if( condition) {
        for ( int subscript=0; subscript<taille; subscript++) {
             actions1[subscript]=subscript+1;
             actions2[subscript]=subscript+1;
             grillePrincipale[subscript]=subscript+1;
        }
    }
    Cela dit, la version C++ est plus sûre, et permettra d'avoir du code plus clair dans le reste du projet
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. [PHP 5.3] Est-ce que cette syntaxe du MVC vous semble correcte ?
    Par beegees dans le forum Langage
    Réponses: 5
    Dernier message: 26/06/2012, 13h18
  2. Est ce que ce code est juste ?
    Par thehurrica dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 11/04/2010, 13h17
  3. [MySQL] est ce que cette méthode est juste
    Par info_sara dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 13/06/2008, 20h08
  4. Est ce que mon programme est juste ?
    Par autoin dans le forum C
    Réponses: 6
    Dernier message: 25/01/2008, 17h06
  5. [débutant]Est-ce que Direct X est programmable en C ?
    Par Bubonik software dans le forum DirectX
    Réponses: 12
    Dernier message: 12/12/2003, 10h45

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