Intergalactic Friend shooters

twiy-logic Messages postés 9 Date d'inscription lundi 29 août 2011 Statut Membre Dernière intervention 11 juillet 2014 - 29 juin 2014 à 04:39
Whismeril Messages postés 19039 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 mai 2024 - 12 déc. 2014 à 19:27
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/100629-intergalactic-friend-shooters

Whismeril Messages postés 19039 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 mai 2024 656
12 déc. 2014 à 19:27
Merci de poster le code ici afin de respecter les termes de la charte et de la licence de mise à disposition du code originel
Bonjour, j'ai modifié le programme dans le cadre du cours "Correction de programmes" donné par Roger Boudreault au Cégep de Chicoutimi.

J'ai appliqué les modifications suivantes:
* Dans tout le code, j'ai remplacé le mot « vesseau » par « vaisseau »
* J'ai créé une classe « laser » qui contient la position et la direction du laser.
* Lorsqu'un joueur tire, ça crée une nouvelle instance de l'objet « laser », et l'ajoute à une liste qui contient tous les lasers du jeu
* À chaque fin de tour, on bouge tous les lasers et on vérifie les collisions avec les vaisseaux
* Lorsqu'un laser sort de la carte, on le supprime
* J'ai amélioré la fluidité du code. J'ai mis le tôt de rafraichissement plus rapide et j'ai modifié la manière dont les vaisseaux se déplacent.
* J'ai changé les contrôles pour se conformer à un clavier QWERTY
* J'ai changé le panneau d'aide pour afficher les nouveaux contrôles

Voici ma version compressée: https://mega.co.nz/#!Go5B1I5Y!bPduQkojadG2IlBMlie5OUviZtApCcEWOMkNrLUBhTE

Bonne journée!
Whismeril Messages postés 19039 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 mai 2024 656
30 juin 2014 à 13:37
Bonjour,

concernant tes contributions en général, la charte demande que l'on ne fasse pas de publicité pour son site personnel dans les sources, tutos ou posts.
Il y a un espace dédié dans le profil. Merci de mettre à jour tes sources.
D'autre part, il est préférable de ne pas poster les exécutables, on partage des sources et chacun peut les compiler à sa convenance.

Pour le code proprement dit, C# est un langage objet, or tu n'utilises aucun objet "métier".
Tu aurais pu créer une classe Vaisseau qui aurait pu gérer la direction de déplacement, les positions X et Y elles-même pouvant être du type Point, les scores, le tir etc...

Les cascades de if peuvent être remplacées par des switch, c'est plus simple a écrire et à lire (tu en utilises d'ailleurs un dans ton rimer).

Il faut penser à coder tes méthodes de façon à ce qu'elles servent plusieurs fois en fonction de paramètres en entrée.
Par exemple vesseau1_tirer et vesseau2_tirer sont "symétriques" l'une définit comment tirer sur l'autre.
Tu aurais pu écrire VaisseauTirer(object Cible) ou mieux après avoir définit la classe Vaisseau: VaisseauTirer(Vaisseau Cible), ça évite du code en double et simplifie la maintenance. Aujourd'hui en cas de bug, tu dois corriger 2 méthodes.

Au lieu de te servir d'Int pour paramétrer les directions, tu aurais pu faire un enum
    public enum Direction
    {
        Haut,
        Bas,
        Gauche,
        Droite
    }

dans le code ça s'utilise comme ça
Direction MaDirection = Direction.Droite;
l'avantage est que tu n'as pas besoin de te demander "4 c'est quelle direction déjà ?", et s'il faut absolument que 4 soit "bas", tu peux le forcer ainsi
    public enum Direction
    {
        Haut,
        Bas = 4,
        Gauche,
        Droite
    }
Rejoignez-nous