twiy-logic
Messages postés9Date d'inscriptionlundi 29 août 2011StatutMembreDernière intervention11 juillet 2014
-
29 juin 2014 à 04:39
Whismeril
Messages postés19039Date d'inscriptionmardi 11 mars 2003StatutContributeurDerniè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.
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és19039Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 mai 2024656 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
}
12 déc. 2014 à 19:27
12 déc. 2014 à 19:22
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!
30 juin 2014 à 13:37
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
dans le code ça s'utilise comme ça
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