Devoir 1 - My Flappy Bird

Dans le premier devoir, vous allez implémenter votre propre version de Flappy Bird. Tout ce qui n'est pas spécifié reste à votre créativité.

Oiseau

L'oiseau sera créé en combinant plusieurs figures géométriques complètes (GL_FILL) générées par vous. Au moins deux primitives géométriques (par exemple, un triangle, un carré, un cercle, etc.), vous devez créer au moins le corps, la tête et le bec de l'oiseau.

Exemple d'oiseau:

  • Deux disques de cercle et un triangle (figure de gauche)
  • Un rectangle, un disque circulaire et un triangle (figure centrale)
  • Un rectangle, un disque de cercle et plusieurs triangles (figure de droite)

L'environnement dans lequel l'oiseau bouge

L’environnement sera créé à partir de paires de rectangles de même largeur mais de hauteur différente, l’un ancré vers le haut et l’autre ancré vers le bas (similaire aux stalactites et stalagmites dans les grottes), comme dans la figure suivante. La hauteur des rectangles peut être définie de manière procédurale, aléatoire ou codée en dur, mais il faut respecter la règle suivante: la distance entre deux paires de rectangles est suffisamment grande pour que l'oiseau puisse passer entre eux.

Gameplay

Le jeu sera un coureur sans fin, ce qui donnera l'impression que l'oiseau se déplace de gauche à droite parmi les paires de rectangles. En fait, l'oiseau ne bouge pas de gauche à droite, mais la scène se déplace de droite à gauche. L'oiseau est affecté par la gravité. Elle aura toujours tendance à se pencher et à tomber. Si vous appuyez sur la touche ESPACE, l'oiseau se lèvera en se penchant vers le haut. Si l'oiseau frappe des rectangles, il meurt. Au fur et à mesure que le temps de survie de l'oiseau diminue, le score du joueur diminue également. Le score du joueur sera affiché périodiquement dans la console. Lorsque l'oiseau meurt, un message s'affiche dans la console, ainsi que le résultat final.

Détails d'implémentation

  • La chute ou l'élévation de l'oiseau se fera par translation sur l'axe Oy.
  • L'inclinaison de l'oiseau vers le bas sera réalisée par une rotation (par rapport au centre de gravité de l'oiseau) dans le sens des aiguilles d'une montre, et l'inclinaison de l'oiseau vers le haut par une rotation dans le sens trigonométrique
  • Les paires de rectangles se déplaceront continuellement sur l'axe Ox (de droite à gauche). Chaque fois qu'une paire de rectangles disparaît (déplacée vers la gauche jusqu'à ce qu'elle quitte l'espace de dessin), une autre paire de rectangles apparaît à droite. La création de l'environnement doit être effectuée de manière à optimiser la consommation de mémoire et le temps de lecture. Ne créez pas continuellement des objets représentant les paires de rectangles qui apparaissent et disparaissent de l'espace de dessin !!!! Une implémentation élégante consiste à créer un seul rectangle dans la fonction init () et dans la fonction Update (), indiquez plusieurs fois la commande de dessin pour ce rectangle, chaque fois à une autre position et avec un autre facteur de mise à l'échelle sur OY. de sorte que les rectangles dessinés ont des hauteurs différentes. De plus, dans la fonction Update (), n'envoyez pas pour les rectangles de dessin qui ont disparu de l'écran!
  • La collision entre l'oiseau et les rectangles peut être simplifiée en vérifiant la collision entre un cercle et des rectangles (si l'oiseau est assez petit par rapport aux rectangles, il peut être approché par le cercle qui l'entoure)

Bonus

  • (5p) Animation de mise à l'échelle pour des paires de rectangles (une paire de rectangles se comportant comme un ensemble de portes coulissantes depuis un ascenseur moderne), de sorte qu'ils s'approchent et s'éloignent continuellement tout en maintenant une distance suffisamment grande. entre eux pour que l'oiseau passe parmi eux)
  • (5p-10p) Scène réaliste (paires de stalactites et de stalagmites plus colorées, à partir de formes plus complexes, l'oiseau ressemble à un oiseau)
  • Les stalactites et les stalagmites ne doivent pas seulement être verticaux (regardez en 2D GJK)
  • Augmenter la difficulté du jeu à mesure que le score du joueur augmente
  • Animation qui simule la façon dont l'oiseau donne des ailes

Exemple (à titre indicatif uniquement): https://www.youtube.com/watch?v=I69adfEqwC0

Fonctionnalités obligatoires

Barre de guidage pour la réalisation des fonctionnalités (sur 100 points):

  • dessin d'oiseaux (15p)
  • dessin moyen (25p)
  • animations fluides (25p)
  • collisions (25p)
  • Statistiques printf en console (5p)
  • readme (5p)

Questions et réponses

Pour les questions, utilisez les forums sur moodle.

Évaluation

Le thème doit être téléchargé sur moodle. Pour être noté, le sujet doit être présenté au laboratoire. Il y aura des laboratoires spéciaux pour présenter les thèmes.

Informations complémentaires

Le devoir sera implémenté dans OpenGL et C ++. Il est conseillé d'utiliser le framework et Visual Studio.

Pour implémenter le devoir, dans le dossier Source / Labs, vous pouvez créer un nouveau dossier, par exemple Tema1, avec les fichiers Tema1.cpp et Tema1.h (pour l'implémentation du POO, vous devriez avoir d'autres fichiers). Pour voir les fichiers nouvellement créés dans Visual Studio dans l'Explorateur de solutions, cliquez avec le bouton droit sur le filtre Labs et sélectionnez Ajouter → Nouveau filtre. Après avoir créé un nouveau filtre, par exemple Tema1, cliquez avec le bouton droit de la souris et sélectionnez Ajouter → Élément existant. Donc, ajoutez tous les fichiers dans le dossier nouvellement créé. Dans le fichier LabList.h, vous devez également ajouter le chemin d'accès à l'en-tête du thème. Par exemple: #include <Labs / Tema1 / Tema1.h>

Archiver le projet

  • l'archive doit normalement contenir toutes les ressources nécessaires à la compilation et à la routine
  • Avant de créer l'archive, assurez-vous de nettoyer le projet
    • faites un clic droit sur le projet dans l' Explorateur de solutions → Nettoyer la solution , ou
    • supprimer le dossier / Visual Studio / obj
  • supprimer le fichier / Visual Studio / Framework_EGC.sdf (s'il existe)
  • supprimer le fichier / Visual Studio / Framework_EGC.VC.db (s'il existe)
  • supprimer le dossier / x64 ou / x86 (s'il existe)
    • l'exécutable final est généré dans le dossier / x86 ou / x64 à la fin de l'édition des liens en fonction de l'architecture sélectionnée pour la compilation (32/64 bits)
  • si l'archive dépasse toujours la limite de 20 Mo (ne devrait pas l'être), vous pouvez également supprimer le dossier / libs ou / Resources car vous pouvez l'ajouter au test. Cela n’est pas recommandé, car il est difficile de vérifier si la version actuelle des bibliothèques / ressources diffère de la version utilisée au moment de la rédaction du thème.

Deadline

13 novembre à 23:55

egc/teme/fr/2019/01.txt · Last modified: 2019/11/04 12:32 by alexandru.gradinaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0