Choisissez votre style : colorisé, impression

Série 18 :
Constructeurs/Destructeurs

Buts

Cette série a pour but de :

  1. vous faire pratiquer l'utilisation des constructeurs/destructeurs;

  2. commencer à vous faire pratiquer la compilation séparée;

  3. 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:

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)

Exercice n°50 (page 121 et 303) de l'ouvrage C++ par la pratique.

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)

Exercice n°51 (page 122 et 303) de l'ouvrage C++ par la pratique.

Lorsqu'une balle tombe d'une hauteur initiale h, sa vitesse à l'arrivée au sol est v=sqrt(2*h*g). 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 h=(v1*v1)/2*g.

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 :

  1. 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?
  2. 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