twiy-logic
Messages postés9Date d'inscriptionlundi 29 août 2011StatutMembreDernière intervention11 juillet 2014
-
2 mars 2014 à 23:19
twiy-logic
Messages postés9Date d'inscriptionlundi 29 août 2011StatutMembreDernière intervention11 juillet 2014
-
4 mars 2014 à 04:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
twiy-logic
Messages postés9Date d'inscriptionlundi 29 août 2011StatutMembreDernière intervention11 juillet 2014 4 mars 2014 à 04:09
Je te remercie pour tes remarques. Je corrigerais (ou ferrais corriger ; D) les fautes. Pour ce qui est de la conception et du code, j'en prends note pour mes prochains programmes ( j'ai fait ce code il y a longtemps, et je ne compte pas le modifier fondamentalement).
Je code aussi en C# ou en VB quand il y a des interfaces, mais à l'époque où j'ai fait ce code, je ne connaissais que la console.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 Modifié par cptpingu le 3/03/2014 à 20:43
Bonjour.
Pas de souci avec la finalité du programme. J'ai néanmoins quelques remarques.
Au niveau conceptuel:
- Si tu veux faire un jeux, la console n'est pas la plus adaptée. Utiliser de la SDL, Qt, ou même de l'OpenGL aurait été plus adapté.
- Si tu veux vraiment faire un jeux en console, tu peux regarder du côté de la biblilothèque "ncurses", qui fait de manière portable ce que tu fais.
- C'est "Shoot'em up" et non "Shoot and up". (c'est le diminutif de "shoot them up", qu'on pourrait traduire par "tirez-les tous" ou "tuez-les tous", et non "tuez et allez en haut").
- C'est bourré de fautes d'orthographe ! De partout ! Faire des fautes ça arrive, mais là tout de même c'est violent ("pressentation" => "présentation", "veseau" => "vaisseau", "stoppe" => "stop", "menue" => "menu", "ver" => "vers", etc...)
- Soit tu codes tout en anglais (ce qui est bien), soit tu codes tout en français, mais ne mélange pas les deux.
- "Appuyez sur une touche", c'est un peu mieux que "tapez" ou "frappez". On appuie sur une touche, mais c'est rare qu'on frappe ou tape une touche (pauvre clavier !).
- Ne met pas l'exe dans le projet. Ici c'est un site de programmeur, et non un site public généraliste. On recompilera de toute façon ton programme. Distribue-le à la limite sur ton site. Les "exe" étaient automatiquement effacés à une période, et le seront surement à nouveau prochainement.
- Le site qui présente ton projet, avec des images, est un bon point.
Au niveau technique:
- Évite les "using namespace": http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace - Au lieu d'écrire plein de std::cout à la suite, tu peux en écrire un seul, et chaîner tes actions.
- Préfère un \n au lieu de plein de std::endl. std::endl est bien pour une fin de phrase. Utilisé en abondance, ce n'est pas terrible. (Pour info, un std::endl c'est "\n + un flush()").
Donc:
- Évite les variables globales, c'est extrêmement sale :(. On peut aisément s'en passer en plus. (Je parle bien de variables globales et non de constantes globales qui ne posent, elles, aucun souci).
- Au lieu de faire plein de "if/else", préfère l'utilisation d'un "switch", bien plus adapté.
- Pour comparer des booléens tu peux faire: "if (cond)" plutôt que "if (cond == true)", et "if (!cond)" au lieu de "if (cond == false)".
- On peut remplacer ceci:
if (mode_programmeur == true) {mode_programmeur = false;}
else if (mode_programmeur == false) {mode_programmeur = true;}
Simplement par:
mode_programmeur = !mode_programmeur;
- Tu n'as pas besoin d'accolades si tu n'as qu'une seule instruction.
- La fonction game est mal découpée. Elle gagnerait à être elle même divisée en plusieurs sous fonctions. D'une manière générale, une fonction qui excède 40-50 lignes (voir 20-30) est une fonction mal pensée (Exception faite de longues routines d'affichage).
- Enfin, le code n'a de C++ que le nom. Tu l'utilises comme du C. On pourrait remplacer std::cout par printf, pour en faire du C. Il n'y a pas de "std::iomanip", pas d'objets, rien qui ne justifie l'utilisation du C++ au lieu du C. Ce n'est pas une erreur en soi, mais c'est juste étrange.
4 mars 2014 à 04:09
Je code aussi en C# ou en VB quand il y a des interfaces, mais à l'époque où j'ai fait ce code, je ne connaissais que la console.
Modifié par cptpingu le 3/03/2014 à 20:43
Pas de souci avec la finalité du programme. J'ai néanmoins quelques remarques.
Au niveau conceptuel:
- Si tu veux faire un jeux, la console n'est pas la plus adaptée. Utiliser de la SDL, Qt, ou même de l'OpenGL aurait été plus adapté.
- Si tu veux vraiment faire un jeux en console, tu peux regarder du côté de la biblilothèque "ncurses", qui fait de manière portable ce que tu fais.
- C'est "Shoot'em up" et non "Shoot and up". (c'est le diminutif de "shoot them up", qu'on pourrait traduire par "tirez-les tous" ou "tuez-les tous", et non "tuez et allez en haut").
- C'est bourré de fautes d'orthographe ! De partout ! Faire des fautes ça arrive, mais là tout de même c'est violent ("pressentation" => "présentation", "veseau" => "vaisseau", "stoppe" => "stop", "menue" => "menu", "ver" => "vers", etc...)
- Soit tu codes tout en anglais (ce qui est bien), soit tu codes tout en français, mais ne mélange pas les deux.
- "Appuyez sur une touche", c'est un peu mieux que "tapez" ou "frappez". On appuie sur une touche, mais c'est rare qu'on frappe ou tape une touche (pauvre clavier !).
- Ne met pas l'exe dans le projet. Ici c'est un site de programmeur, et non un site public généraliste. On recompilera de toute façon ton programme. Distribue-le à la limite sur ton site. Les "exe" étaient automatiquement effacés à une période, et le seront surement à nouveau prochainement.
- Le site qui présente ton projet, avec des images, est un bon point.
Au niveau technique:
- Évite les "using namespace": http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Au lieu d'écrire plein de std::cout à la suite, tu peux en écrire un seul, et chaîner tes actions.
- Préfère un \n au lieu de plein de std::endl. std::endl est bien pour une fin de phrase. Utilisé en abondance, ce n'est pas terrible. (Pour info, un std::endl c'est "\n + un flush()").
Donc:
devrait plutôt s'écrire:
- Évite les variables globales, c'est extrêmement sale :(. On peut aisément s'en passer en plus. (Je parle bien de variables globales et non de constantes globales qui ne posent, elles, aucun souci).
- Au lieu de faire plein de "if/else", préfère l'utilisation d'un "switch", bien plus adapté.
- Pour comparer des booléens tu peux faire: "if (cond)" plutôt que "if (cond == true)", et "if (!cond)" au lieu de "if (cond == false)".
- On peut remplacer ceci:
Simplement par:
- Tu n'as pas besoin d'accolades si tu n'as qu'une seule instruction.
- La fonction game est mal découpée. Elle gagnerait à être elle même divisée en plusieurs sous fonctions. D'une manière générale, une fonction qui excède 40-50 lignes (voir 20-30) est une fonction mal pensée (Exception faite de longues routines d'affichage).
- Enfin, le code n'a de C++ que le nom. Tu l'utilises comme du C. On pourrait remplacer std::cout par printf, pour en faire du C. Il n'y a pas de "std::iomanip", pas d'objets, rien qui ne justifie l'utilisation du C++ au lieu du C. Ce n'est pas une erreur en soi, mais c'est juste étrange.