Série 18 :
Constructeurs/Destructeurs
Buts
Cette série a pour but de :
vous faire pratiquer l'utilisation des constructeurs/destructeurs;
commencer à vous faire pratiquer la compilation séparée;
-
vous faire prendre en main les bases de l'environnement graphique dans lequel vous allez travailler pour le projet.
Il est important d'avoir bien assimilé les deux premières notions pour aborder votre projet. Évitez de sauter des étapes cette semaine.
La prise en main de l'environnement graphique se fera à l'aide d'un tutoriel graphique ponctué d'exercices. Ces derniers vous permettront au final de programmer un mini-projet (petit jeu de pong graphique) où vous exercerez tous les fondamentaux : base de la POO, compilation séparée et fonctionnalités de base de la libraire SFML. Notez qu'il n'est pas nécessaire de maîtriser l'utilisation de la SFML pour coder le projet. Vous serez beaucoup guidé à ce niveau, le but étant de se concentrer d'avantage sur les fondamentaux de la programmation orientée objets.
Préliminaires :
IMPORTANT ! Les inscriptions au projet sont en cours et se terminent le 17 Mars à 9:00 . Il est prévu que vous commenciez à programmer la semaine 5 (19) (selon le calendrier du cours)
Mise en place sous QTCreator
Cette série peut être réalisée avec Geany ou QTCreator. Si vous souhaitez utiliser QTCreator, vous pouvez mettre en place le projet comme suit:- copiez l'archive fournie serie18.zip dans le répertoire cpp/serie18/
- Dézippez cette archive :
cd cd Desktop/myfiles/Programmation/cpp/serie18/ unzip serie18.zip rm serie18.zip
- Lancez le programme QTCreator, et ouvrez y le fichier fourni dans ce répertoire et nommé CMakeLists.txt. Procédez comme indiqué ici https://iccsv.epfl.ch/series-prog/install/installation-tutorial.php#qtcreator-cmakeproject depuis la section "Création du projet".
- Vous pouvez choisir lequel des programmes vous voulez lancez en cliquant sur le petit écran (Debug) sur le bandeau latéral gauche.
Exercice 0 : compilation séparée (CMake, niveau 0)
Le but de cet exercice est de vous montrer comment utiliser CMake pour vous simplifier la vie lors de la compilation des multiples fichiers dont sera composé votre projet.Cliquez ici si vous souhaitez faire cet exercice.
Exercice 1 : un peu de poésie pour commencer (constructeurs/destructeurs, niveau 1)
Dans un fichier poeme.cc définissez la classe Fleur de sorte que le main suivant :
int main () { Fleur f1("Violette", "bleu"); Fleur f2(f1); cout << "dans un cristal "; f2.eclore(); cout << "Donne un poeme un peu fleur bleue" << endl << "ne laissant plus "; return 0; }
affiche le texte suivant :
Violette fraichement cueillie Fragile corolle taillee dans un cristal veine de bleu Donne un poeme un peu fleur bleue ne laissant plus qu'un simple souffle... qu'un simple souffle...
Remarque: Il peut y avoir plusieurs solutions différentes à ce problème.
Exercice 2 : balles rebondissantes (Constructeurs/destructeurs, niveau 2)
Lorsqu'une balle tombe d'une hauteur initiale h, sa
vitesse à l'arrivée au sol est
.
Immédiatement après le rebond, sa vitesse est v1=eps*v (où eps
est une constante et v la vitesse avant le rebond).
Elle remonte alors à la hauteur
.
Implémentez (au moyen d'une classe) une modélisation permettant de simuler les rebonds d'une telle balle, et tester le modèle de sorte à répondre aux questions suivantes :
- Pour une balle avec un coefficient de rebond eps = 0.75, lâchée d'une hauteur h = 20, quelle est la hauteur de la balle atteinte lors du 4ème rebond?
- Après combien de rebonds une balle avec eps = 0.9 , lâchée depuis une hauteur h=10, rebondira avec une vitesse v1 < 3.
Gardez à l'esprit ici que, plus que la réponses à ces questions, c'est ici la manière dont la réponse est obtenue qui est importante (càd le code qu'il faut écrire dans la fonction main pour obtenir les réponses, code directement dépendant des possibilités offertes par la classe).
Portez également attention à la nature des différents membres (constants, types et types de retour, privés/publics etc..)
Voici un exemple d'exécution possible pour votre programme :
Partant d'une hauteur de 20, une balle de tennis (eps=0.75) normalement constituée atteint une hauteur de 2.00226 à son 4è rebond. Ce n'est qu'au 15e rebonds qu'une balle de ping-pong (eps=0.9) lâchée d'une hauteur de 10, rebondit avec une vitesse inférieur à 3...
Mini-projet : jeu de Pong (POO, CMake, SFML, niveau 2)
Cet "exercice" est en fait un tutoriel à suivre pas à pas pour apprendre les fonctionnalités de base de la librairie SFML. Ce tutoriel est ponctué d'exercices à chaque étape, lesquels vous permettront d'exercer les bases de la POO et de la compilation séparée. La réalisation des exercices vous permettra au final de programmer un mini-projet "Jeu de Pong".
Pour vous permettre d'aller jusqu'au bout du tutoriel même si vous n'arrivez pas au bout de chaque exercice, les corrigés vous sont fournis au fur et à mesure. Il est cependant bien sûr recommandé d'essayer d'abord par vous-même.
Et maintenant ... suivez le guide
Dernière mise à jour : 2025/03/06 13:46
Mini-projet : jeu de Pong (POO, CMake, SFML, niveau 2)
Pour vous permettre d'aller jusqu'au bout du tutoriel même si vous n'arrivez pas au bout de chaque exercice, les corrigés vous sont fournis au fur et à mesure. Il est cependant bien sûr recommandé d'essayer d'abord par vous-même.
Et maintenant ... suivez le guide