Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Demande d'avis sur un projet Snake

    9 octobre 2021 à 11:23:50

    Bonjour à tous,

    Je débute en C# et j'ai décidé de développer un premier projet de manière à voir mes capacités et à m'améliorer. Le projet s'avère donc être un Snake sur console. Étant débutant dans ce langage j'aimerai avoir votre avis sur mon projet dans l'utilisation des classes et l’ordonnancement du projet, si par exemple j'ai pas un peu trop complexifié l'arborescence du projet. En fait j'ai voulu me calquer sur un modèle MVC pour ce projet. Pourquoi pas avoir aussi votre avis sur comment vous auriez abordé le Snake pour en apprendre plus sur d'autres manières de faire !

    D'autres parts comme j'utilise Console.SetCursorPosition(), j'ai été obligé de supprimer tout les résidus et j'ai utilisé ce que j'ai appelé GarbageCollector() : une méthode de la classe Display qui remplace les cases au alentour chaque partie du corps du snake par des " ".

    Le projet étant constitué de plusieurs classes je vous le laisse à partir de mon GitHub : https://github.com/Szarin/Snake-Console-Game-Csharp

    Merci de votre écoute !

    -
    Edité par Szarin 9 octobre 2021 à 11:24:22

    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2021 à 11:30:19

      La convention de nommage "snake", bof car pas suivi par les conventions standard en C#.

      Un peu beaucoup de static qui ressemble à un refus de faire de la POO, non ? (ou une manière "élégante" de faire un Singleton ?)

      Évitez d'avoir plusieurs générateur de nombre pseudo-aléatoire, ça permet de faire des "replay" si vous avez un seul générateur (=> Singleton ou des static).

      La méthode Remove de "AppleElement", vous allez louper la suppression d'élément qui se suivent, faite plutôt la boucle dans l'autre sens (en commençant par la fin).

      Je trouve votre arborescence des classes "SettingElements" assez bancale, avec un membre ayant un type dérivé en tant que membre, des fonctionnalités/méthodes qui n'ont pas vraiment de rapport avec "SettingElements" (le S des principes SOLID), etc...

      "SnakeElement", c'est aussi un peu l'auberge espagnole, un peu aussi poussé par son héritage avec "SettingElements".

      Et une classe "singulière" (pas de "s" à la fin du nom) qui dérive d'une classe plurielle, c'est un cas un peu pathologique d'un problème de conception de l'arborescence des classes.

      "CreateBody" quand ça ne crée qu'un segment, bof.

      "HeadDirection", c'est clairement lié au jeu, pas au serpent.

      Idem pour Display, sa fonction n'est pas claire. Vous utilisez des termes "consacrés" comme "GarbageCollector" pour des choses qui n'ont rien à voir avec ce que dise leur nom. ici, c'est juste pour afficher les cases "vides".

      Le MVC, il m'a pas sauté à la figure en lisant en diagonal le code.

      >qui remplace les cases au alentour chaque partie du corps du snake par des " ".

      Si vous ne voulez pas ré-afficher toute la console (clignotement ?), Display n'a qu'à garder trace de l'état précédent du "board" et de faire les nécessaire changer à chaque renouvellement du board en comparant avec le précédent. (=> découpage entre le Model (ici le board) et la Vue (ici Display)).

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

      [C#] Demande d'avis sur un projet Snake

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