JEU DU SERPENT (LE STRICT MINIMUM DE CODE)

tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009 - 24 nov. 2010 à 15:28
loudadyassine Messages postés 11 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 20 août 2011 - 25 nov. 2010 à 16:36
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52504-jeu-du-serpent-le-strict-minimum-de-code

loudadyassine Messages postés 11 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 20 août 2011
25 nov. 2010 à 16:36
billou_13++ ! c'est exactement ce que je voulais dire mais peut etre que je me suis mal exprimé.
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
25 nov. 2010 à 14:44
Salut à tous,

En faisant abstraction du fait que ce code soit ou non utile pour les débutants (point sur lequel je rejoins plus TMCUH), je trouve personnellement que ce code est un bon challenge personnel (ce qu'a du se dire LOUDADYASSINE).
Cela me rappelle l'époque (que je me sens vieux en disant ça ;p ) où certaines personnes étaient tellement en avance pour les projets informatiques de fin d'année qu'ils se lançaient des challenges: "à qui fera le jeu en moins de [XXX]Ko) ?". Certes, les "best practices" n'étaient peut être pas au rendez-vous mais cela permettait de tenir en haleine les petits geeks comme nous le sommes un peu tous aujourd'hui.

C'est pourquoi, je pense qu'il ne s'agit certainement pas d'un code de conduite à suivre par les débutants mais plutôt d'un petit challenge pour les gens ayant déjà fait le tour de pas mal de points et lassés de toujours corriger les mêmes bugs au boulot...

Bonne journée à tous,

@loudadyassine: peut-être aurais-tu pu te présenter à incroyable talent avec ce snake en moins de 100 lignes de code (mais le jugement de Mr Rozon aurait certainement été le même que TMCUH ;p )
loudadyassine Messages postés 11 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 20 août 2011
24 nov. 2010 à 22:23
Totalement d'accord avec toi lol, d'ailleurs ca m'est arrivé beaucoup de fois :D ! mais t'inquiète pas pour mes nouveaux projets, c'est vraiment du langage humain lol :D ! une classe par fichier, fonctions atomiques, règles de noms de variables ( locales, privées et publiques).
Mais comme je t'avais dit le but de ce petit projet que j'ai fait que par plaisir est pas de faire quelque chose de clair lol.
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
24 nov. 2010 à 22:18
Oui bien entendu mais si tu programme dans l'idée que toi seul maintiendra ton code, tu verra quand tu aura 50 projet derrière toi, tu ne comprendra plus tes premiers codes, car ta technique aura évolué, les noms que tu utilisera, etc. Si tu ne perd pas ton temps au départ, c'est les temps que tu perdra après pour maintenir ton code. Si dans optique de départ tu commente, tu structure avec l'idée de "est-ce que je peux le réutiliser plutard", si oui "est-ce que je peux le rendre plus puissant par la suite"... alors tu as tout compris, car la maintenabilité n'a pas de prix!
rdv dans 10 ans ? ;)
loudadyassine Messages postés 11 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 20 août 2011
24 nov. 2010 à 18:13
lol je voulais pas faire dernier snake a la mode lol ! un petit serpent qui bouge c'est tout, donc quand on perd sortir du jeu avec un Application.Exit() est suffisant pour moi.
"Parfois en programmation il faut faire plus de lignes pour rendre les choses plus simple, même si il y avait un chemin extrement plus court." je suis totalement d'accord avec toi et d'ailleurs j'avais écris : "minimiser leurs codes ( et pas de l'optimiser ! rien à voir et c'est presque l'inverse ! )".
et je suis aussi d'accord avec toi sur le fait qu'il faut analyser mon code pour le comprendre, et c'est ce que je veux en fait, je suis contre les commentaires abusifs, il faut savoir parler informatique, logique, et pas que parler francais ... sérieusement demande a tous les profs de maths s'ils demandent a leurs élèves de répondre par des formules mathématiques rigoureuses ou du francais ! Dernièrement j'ai travaillé sur des projets ou il fallait intégrer quelques librairies open source et les modifier, travailler sur un code d'un ex-collègue qui est parti et a laissé un code sans commenataires ni rien, mais on y arrive sans problème grace au refractoring et le F12 de visual studio lol!
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
24 nov. 2010 à 17:41
lol presque language humain... perso je suis prof de programmation on me sort un code comme ça je met 0, car la logique est dans ta tête. Une personne qui lit ça de haut en bas, comprend rien à ton code, il faut analyser chaque segment, chaque fonction pour se dire "ahhh ouiii mais bien sûre c'est comme ça qu'il a pensé là chose". Si je devais prendre le problème dans un texte en français, j'ai aucune intro et aucune conclusion, on ne connait ni là où ça commence (construction du bloc et l'addition des blocs) et pas de conclusion (que se passe t-il après qu'il ai mangé et comment les choses sont painte)... Je sais pas si tu vois où je veux en venir... Mais tu n'as pas de bloc logique dans le code. Tu vois des imbrications, mais pas de "trunk".
Aucun programmeur ne va encapsuler une classe faisant "pouette, pouette" dans la classe principale faisant le calcul. Bien sûre ta technique est bonne pour construire, conduire, etc. le serpent, mais la méthodologie est trop "simpliste" et donc presque inmaintenable. Je ne le conseillerais pas au débutant.
Parfois en programmation il faut faire plus de lignes pour rendre les choses plus simple, même si il y avait un chemin extrement plus court.
Pour moi en voyant une ligne comme ça dans mon code, je la delete et je la retravaille : if (Coordonates.Equals(Head)) Application.Exit(); else if( PreviousPiece != null) PreviousPiece.BitItSelf(Head);
En gros là on dit, ahhh il risque d'avoir un problème là, si y'a un problème "fuyons", elle est où la logique pour qu'un tel process n'arrive jamais?
PS : aucune attaque personnel dans ce message, rien qu'une critique de quelqu'un qui programme depuis de nombres années pour des entreprises ;)
loudadyassine Messages postés 11 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 20 août 2011
24 nov. 2010 à 16:58
Franchement, a part les fonctions dans le keyup je ne vois pas qu'est ce qu'il faudrait commenter, parce que puisque le code est minimaliste, on est arrivé au point que chaque ligne a une signification très claire de ce qu'elle fait, c'est presque du langage humain.

switch (e.KeyCode)
{
case Keys.Left:
nx nx + (nx - 1) * (nx + 1); ny 0;
break;
case Keys.Right:
nx nx - (nx - 1) * (nx + 1); ny 0;
break;
case Keys.Up:
nx 0; ny ny + (ny - 1) * (ny + 1);
break;
case Keys.Down:
nx 0; ny ny - (ny - 1) * (ny + 1);
break;
}

Pour cette partie du code, ca parle aux matheux un peu, ca permet de ne pas laisser le joueur aller a gauche si le seprent va a droite, et ne pas le laisser aller a droite s'il va a gauche, et ainsi pour le haut et le bas. il suffit de remplacer nx=1 et ny=0 ( a droite ) dans le cas de Keys.Left pour voir que ca changera pas.
Je suis disponible pour toute autre explication, c'est sur qu'il a pas été fait dans le cadre d'aider un débutant, mais j'ai pensé que ca peut aider quelqu'un à voir qu'il faut pas des centaines de lignes pour faire un serpent qui bouge.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
24 nov. 2010 à 16:16
Pas mal du tout : ton code mériterais une bonne note s'il était commenté (par exemple le Application.Exit() n'est pas clair pour moi) et mieux indenté (on doit voir tout le code seulement en défilant verticalement) : c'est dommage en effet de s'arrêter en l'état, alors que je trouve le résultat assez intéressant.
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
24 nov. 2010 à 15:28
Je vois pas en quoi ton code aide les débutant, y'a pas de avant-après, ni d'algorithme pour savoir comment ça fonctionne. Et je doute qu'un débutant puisse s'y retrouver dans ton code car il n'y aucun commentaire et certaines instructions sont sur la même ligne, ce qui est "nul" à part si on veut faire dans la figuration.
J'ai peine à croire qu'il sagit là d'un code enrichissant sur comment simplifié des codes complexes.
Excuse moi ton code est peut être "génial" mais un peu de modestie n'aurait pas fait de mal ;)
Rejoignez-nous