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

Défis Qt Discussion :

[Malikemal] Participation au défi Qt


Sujet :

Défis Qt

  1. #21
    Malikemal
    Invité(e)
    Par défaut
    Citation Envoyé par johnlamericain Voir le message
    Donc si tu as une même régle qui s'applique à plusieurs piéces, la logique est dupliquée dans l'ensemble des pièces qui doivent respecter cette règle ?
    J'y ai pensé aussi Mais ça ne s'applique que dans un seul cas : la reine qui se déplace soit comme une tour soit comme un fou. Je ne pense pas que j'aurai dû diviser cela en deux classes à cause de ça. Une duplication du code vaut-elle un code long comme une girafe et redondant à souhait ? Pour moi, dans ce cas-là la duplication est ce que j'ai choisi.

  2. #22
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Citation Envoyé par Malikemal Voir le message
    J'y ai pensé aussi Mais ça ne s'applique que dans un seul cas : la reine qui se déplace soit comme une tour soit comme un fou. Je ne pense pas que j'aurai dû diviser cela en deux classes à cause de ça. Une duplication du code vaut-elle un code long comme une girafe et redondant à souhait ? Pour moi, dans ce cas-là la duplication est ce que j'ai choisi.
    Tu as raison dans le sens ou un code long avec des switch ou if n'est pas quelque chose à favoriser, je suis loin de dire cela. Cependant du code dupliqué et plus dur à maintenir, si une erreur est trouvé, la modification est alors à apporté dans les 2 ou + morceaux de code, etc. Tu peux aussi découper ça dans plusieurs plus petites fonctions (classe d'aide aux règles) qui auront des tests unitaires (évidemment ) et du coup tes 2 pièces ne font qu'appeler la même fonction au besoin.

    Par contre je ne suis pas d'accord sur le fait que tu auras qu'un seul cas de code dupliqué pour les règles, on en reparlera à la fin de l'implémentation

  3. #23
    Malikemal
    Invité(e)
    Par défaut
    Ça nécessiterai un gros changement d'architecture de mon code, et je manque vraiment de temps ... Je ne peux coder que le WE (et là encore seulement un temps très limité), si on compte qu'en plus j'ai un mois de retard et que Qt Creator me sort des erreurs bizarres, je m'y retrouve difficilement !

    Néanmoins je m'incline devant tes arguments

  4. #24
    Malikemal
    Invité(e)
    Par défaut
    QtCreator me sort des problèmes ... bizarres. Le compilateur me dit par exemple que "vector does not a name type" alors que j'ai bien l'include Vous savez pas d'où ça peut venir ? Sachant que ça le fait pour d'autre choses (une enum aussi, et une classe) (Je n'ai pas très envie de créer un topic pour si peu ...)

    EDIT : Comme si il ne prenait pas en compte les includes ...

  5. #25
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    Sans plus d'informations, je dirais que cela ressemble à un problème de dépendances cycliques.

    Bonne soirée,
    Amnell.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  6. #26
    Malikemal
    Invité(e)
    Par défaut
    Comment ça se soigne docteur ? Besoin du code ? Je pense effectivement que c'est ça.

    EDIT : Après vérification, c'est bien de là que vient le problème mais je ne peux pas faire autrement ! Ma classe Echiquier prend pour certaines méthodes des "Pieces" en paramètres et inversement pour la classe Piece ... Comment je me débrouille ?
    Dernière modification par Malikemal ; 19/05/2012 à 21h59.

  7. #27
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Comme ceci ?

    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
    #ifndef TRUC_H_
    # define TRUC_H_
     
    class Piece;
     
    class Equiquier
    {
    public:
        void doSomething(Piece *, int);
    };
     
    class Piece
    {
    public:
        void doSomething(Echiquier *);
    };
     
    #endif
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  8. #28
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Ou #pragma once, même si ce n'est pas trop standard.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  9. #29
    Malikemal
    Invité(e)
    Par défaut
    Citation Envoyé par Amnell Voir le message
    Comme ceci ?

    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
    #ifndef TRUC_H_
    # define TRUC_H_
     
    class Piece;
     
    class Equiquier
    {
    public:
        void doSomething(Piece *, int);
    };
     
    class Piece
    {
    public:
        void doSomething(Echiquier *);
    };
     
    #endif
    Mettre les définitions de classes dans le même fichier ? En effet, je n'y avais pas pensé !

    Je vais rester sur du standard de préférence pour l'instant

    Merci,

  10. #30
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Citation Envoyé par Malikemal Voir le message
    Mettre les définitions de classes dans le même fichier ? En effet, je n'y avais pas pensé !
    Pas forcément dans le même fichier :
    http://cpp.developpez.com/faq/cpp/?p...erence_croisee
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  11. #31
    Malikemal
    Invité(e)
    Par défaut
    C'est encore mieux alors !

    Merci beaucoup,

  12. #32
    Malikemal
    Invité(e)
    Par défaut
    Bon alors, après un rapide coup d'œil à mes erreurs de compilation je me suis rappelé pourquoi j'avais commencé à étudier le Python ... Je vais faire chauffer l'interpréteur

  13. #33
    Membre habitué Avatar de 0x4e84
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2002
    Messages : 116
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par Malikemal Voir le message
    Bon alors, après un rapide coup d'œil à mes erreurs de compilation je me suis rappelé pourquoi j'avais commencé à étudier le Python ... Je vais faire chauffer l'interpréteur
    Bienvenue au club des Pythoneurs ;-)

  14. #34
    Malikemal
    Invité(e)
    Par défaut
    Bonjour à tous,

    Étant donné que je recommence l'application, j'ai décidé de recommencer proprement. J'ai donc fait ce petit diagramme :


    Je me demandais déjà ce que vous en pensiez, et aussi un avis sur ça :
    Pour gérer les différents types de jeu (homme vs homme, ordi vs homme, réseau, etc ...) j'ai prévu d'utiliser une classe pour chaque, qui hérite toutes d'une classe "Jeu", celle que vous voyez. Mais pour pouvoir créer une instance de la bonne classe, je vais utiliser des instructions conditionnelles ... Est-ce que c'est une manière "propre" ? Ou y-a-t'il une meilleure manière de procéder ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #Un exemple
    if jeuEnReseau:
        jeu = Resau()
    elif jeuHvsH:
        jeu = HvsH
    elif jeuHvsOrdi:
        jeu = HvsOrdi
    else:
        #Exception
    Étant donné qu'il héritent tous de Jeu, je pourrai utiliser seulement les méthodes de cette classe ... Alors ?
    Merci,
    Images attachées Images attachées  

  15. #35
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Je ne vois pas pourquoi le RulesManager est aussi proche du Controlleur.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #36
    Malikemal
    Invité(e)
    Par défaut
    Tu veux dire d'un point de vue purement graphique ?
    Sinon sûrement parce que seule la classe Controleur l'utilise !

  17. #37
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Pourquoi est ce le Controlleur qui vérifie les coups et non le jeu ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  18. #38
    Malikemal
    Invité(e)
    Par défaut
    Le Principe de Responsabilité Unique ! La classe Jeu s'occupe déjà de redistribuer les coups, donc elle ne peut pas s'occuper d'autre chose.

  19. #39
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut

    Alors le controlleur s'occupe de créer (récupérer) les coups. (et paf !)


    Disons que la responsabilité unique, c'est le fait que chaque classe possède une et une seule responsabilité (soit, elle ne s'occupe que d'une chose et elle le fait bien).
    Ici, je demande juste pourquoi vous le faites comme cela. Cela ne me semble pas faux.

    Par contre, votre Affichage me semble notifier deux fois, pour chaque coup ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  20. #40
    Malikemal
    Invité(e)
    Par défaut
    Citation Envoyé par LittleWhite Voir le message

    Alors le controlleur s'occupe de créer (récupérer) les coups. (et paf !)


    Disons que la responsabilité unique, c'est le fait que chaque classe possède une et une seule responsabilité (soit, elle ne s'occupe que d'une chose et elle le fait bien).
    Ici, je demande juste pourquoi vous le faites comme cela. Cela ne me semble pas faux.
    J'ai pas compris là :/ Mais faut pas pousser non plus
    Par contre, votre Affichage me semble notifier deux fois, pour chaque coup ?
    La notification venant du controleur correspond à : - si une pièce est sélectionné à envoyer les déplacements valides
    - sinon vérifie que la pièce sur laquelle on clique peut bouger, si oui on envoie les déplacements possibles. Je pense que je vais faire ça dans une autre classe mais je ne voulais pas alourdir inutilement le graphique.

Discussions similaires

  1. [Ness] participation au défi Qt
    Par ness522 dans le forum Défis Qt
    Réponses: 30
    Dernier message: 16/09/2012, 22h06
  2. [RedKite] Participation au défi Qt
    Par redkite dans le forum Défis Qt
    Réponses: 3
    Dernier message: 17/07/2012, 00h24
  3. [cube45] Participation au défi Qt
    Par cube45 dans le forum Défis Qt
    Réponses: 3
    Dernier message: 27/06/2012, 21h01

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