Partage
  • Partager sur Facebook
  • Partager sur Twitter

petit Snake avec SFML besoin d'avis sur le code

    19 mai 2022 à 18:11:08

    Bonjour, je me suis remis à la programmation il y a un mois après avoir arrêté plusieurs années, j'ai donc décidé de reprendre toutes les bases du C++ et ensuite faire un snake pour m'entrainer, auriez vous des conseils pour améliorer le code,des choses que j'aurais dû faire ou ne pas faire ? Merci,je tiens à préciser que je vais commencer un BTS SIO SLAM et donc que je compte en faire mon métier, merci !

    Voici le code : https://github.com/KrySoar/SnakeGame

    -
    Edité par KrySoar 19 mai 2022 à 18:13:06

    • Partager sur Facebook
    • Partager sur Twitter
      19 mai 2022 à 20:12:51

      Généralement, on ne met pas les binaires sur github, juste les sources. On délègue aussi la compilation à un système de build tel que meson, xmake, cmake, etc qui permettent de configurer les emplacements des bibliothèques et le compilateur utilisé.

      À part les remarques sur le code:

      • Trop d'usage de pointeur. Par exemple, les fonctions draw() qui prennent un pointeur alors que le paramètre devrait être une référence.
      • Sur BodyPart, le paramètre direction de move() devrait être une énumération
      • Toujours sur BodyPart, les 2 constructeurs pourraient être fusionnés, BodyPart::BodyPart() : BodyPart(sf::Vector2f(500.0f,500.0f)) {} ou via une valeur par défaut. Mais je ne sais pas si c'est pertinent d'avoir une taille par défaut.
      • Les constantes de taille sous forme de float me semble étrange pour WIN_HEIGHT et WIN_WIDTH
      • L'utilisation de rand() est déconseillée depuis C++11 et l'en-tête https://en.cppreference.com/w/cpp/numeric/random
      • L'indentation de main.cpp est tout cassé avec ce mélange de tab et espace
      • Je trouve qu'un opérateur ++ pour Snake est douteux. Une fonction avec un vrai nom serait mieux.
      • Plein de fuite mémoire dans Snake à cause de l'utilisation d'un new sans delete. Lorsqu'on fait de l'allocation dynamique, la priorité de passer par unique_ptr et make_unique. Ici, il n'y a aucun besoin de faire de l'allocation dynamique, il ne devrait pas du tout y avoir de pointeur dans le vector.</random>
      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2022 à 20:33:21

        Justement pour cmake j'ai essayé de comprendre comment l'utiliser avec SFML mais je n'ai pas réussi.

        Pour l'énumération avec move je suis d'accord j'y avais pense mais j'ai préféré faire comme ça mais c'est vrai que ce serait mieux je vais changer.

        J'ai mis les constantes en float car pour la SFML ce sont des arguments en float il me semble. Et pour rand() j'avais vu ça mais je voulais quelque chose de simple et pas forcément très random.

        Et pour le mélange tab et space je pense que j'ai du mal configurer vim.

        Et pour le delete je n'ai pas réussi à l'implémenter, j'ai essayé faire un delete sur chaque élément de snakeBody sauf la tête mais j'avais une erreur de segmentation.

        Merci beaucoup pour ce retour !

        • Partager sur Facebook
        • Partager sur Twitter
          19 mai 2022 à 20:51:58

          Bonjour,

          Si tu veux un cours à jour pour parfaire ta pratique du C++ je te déconseille le tuto de ce site, vas plutôt lire le cours de zeste de savoir il est moderne et apprend à produire du code maintenable et plus robuste: https://www.zestedesavoir.com

          • Partager sur Facebook
          • Partager sur Twitter

          Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

            19 mai 2022 à 22:29:58

            Merci Warren c'est justement avec ce cours que j'ai repris le c++ car celui d'OC n'est pas dutout à jours et j'alterne avec d'autres cours en anglais et je lis aussi petit à petit la 4eme édition du livre de Bjarne Stroustrup.
            • Partager sur Facebook
            • Partager sur Twitter
              19 mai 2022 à 23:33:27

              KrySoar a écrit:

              je lis aussi petit à petit la 4eme édition du livre de Bjarne Stroustrup.

              C'est vraiment une excellente idée de lire un "gros truc" pour avoir une compréhension plus fine et pas juste se contenter de cours aseptisés qui ne parlent pas de 95% des détails. Après ce livre date de C++11, donc pour tout ce qui est fonctionnement du langage etc il n'y a aucun problème, mais il va peut être manquer certaines nouveautés arrivées après, qu'il faudra aller chercher ailleurs, ce que tu fais aussi apparemment donc c'est très bien.

              Il y a aussi les C++ Core Guidelines (http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) qui sont en permanence à jour (d'ailleurs c'est tellement à jour qu'ils laissent des "???" par endroits, en attendant que quelqu'un remplisse)

              • Partager sur Facebook
              • Partager sur Twitter
                20 mai 2022 à 0:13:34

                KrySoar a écrit:

                je lis aussi petit à petit la 4eme édition du livre de Bjarne Stroustrup.

                Si tu parles de "The C++ Programming Language", c'est peut être pas le mieux à lire. Il est assez ancien et surtout c'est un livre "catalogue", qui n'a plus forcément d'intérêt de nos jours comparé a des sites comme https://en.cppreference.com/w/ 

                Vu que tu sais déjà programmer et que tu reprends la programmation, le livre Tour of C++ (seconde édition) du même auteur est probablement plus intéressant et adapté pour toi. (En seconde lecture, je conseille Professional C++, mais c'est plus gros)

                • Partager sur Facebook
                • Partager sur Twitter
                  20 mai 2022 à 8:17:09

                  JadeSalina a écrit:

                  KrySoar a écrit:

                  je lis aussi petit à petit la 4eme édition du livre de Bjarne Stroustrup.

                  C'est vraiment une excellente idée de lire un "gros truc" pour avoir une compréhension plus fine et pas juste se contenter de cours aseptisés qui ne parlent pas de 95% des détails. Après ce livre date de C++11, donc pour tout ce qui est fonctionnement du langage etc il n'y a aucun problème, mais il va peut être manquer certaines nouveautés arrivées après, qu'il faudra aller chercher ailleurs, ce que tu fais aussi apparemment donc c'est très bien.

                  Il y a aussi les C++ Core Guidelines (http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) qui sont en permanence à jour (d'ailleurs c'est tellement à jour qu'ils laissent des "???" par endroits, en attendant que quelqu'un remplisse)

                  gbdivers a écrit:

                  KrySoar a écrit:

                  je lis aussi petit à petit la 4eme édition du livre de Bjarne Stroustrup.

                  Si tu parles de "The C++ Programming Language", c'est peut être pas le mieux à lire. Il est assez ancien et surtout c'est un livre "catalogue", qui n'a plus forcément d'intérêt de nos jours comparé a des sites comme https://en.cppreference.com/w/ 

                  Vu que tu sais déjà programmer et que tu reprends la programmation, le livre Tour of C++ (seconde édition) du même auteur est probablement plus intéressant et adapté pour toi. (En seconde lecture, je conseille Professional C++, mais c'est plus gros)


                  D'accord merci à vous deux, d'ailleurs gbdivers je suivais ton cours il y a quelques temps !
                  • Partager sur Facebook
                  • Partager sur Twitter

                  petit Snake avec SFML besoin d'avis sur le code

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  • Editeur
                  • Markdown