Hello Invaders

Signaler
Messages postés
9
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
11 juillet 2014
-
Messages postés
9
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
11 juillet 2014
-
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/100431-hello-invaders

Messages postés
9
Date d'inscription
lundi 29 août 2011
Statut
Membre
Dernière intervention
11 juillet 2014

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.
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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:
std::cout << "toto" << std::endl;
std::cout << "toto" << std::endl;
std::cout << "titi" << std::endl;

devrait plutôt s'écrire:
std::cout << "toto\n"
              << "toto\n"
              << "titi" << std::endl;

- É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.