Ecole Polytechnique Fédérale de Lausanne
Section Sciences de la vie
Programmation Orientée Objet
Tutoriel librairie graphique (SFML)

Introduction: Librairies graphiques et SFML

Jusque là, les programmes que nous avons conçus s'exécutaient uniquement en lignes de commandes, limitant grandement les possibilités d'affichage et d'interaction avec l'utilisateur. Il est intéressant d'aller maintenant plus loin.

La bibliothèque standard du C++ ne contient pas de paquet permettant de créer des applications graphiques. Ce sont les différents systèmes d'interfaces graphiques des systèmes d'exploitation qui fournissent aux développeurs des interfaces d'utilisation (API/SDK, dans le jargon informatique) permettant d'accéder à leurs fonctions.

De nombreuses librairies existent pour pouvoir utiliser ces API/SDK en C++, souvent de manière portable, c'est-à-dire que le même code pourra être compilé et exécuté sur plusieurs plateformes.

Pour ce faire, elles utilisent pleinement le concept d'abstraction de la programmation orientée objet. Seuls les prototypes des classes et des méthodes sont exposés au développeur utilisateur, dans les fichiers headers .h et généralement dans la documentation. Une implémentation est programmée pour chaque plateforme, et il suffira alors de changer l'implémentation compilée avec notre propre code pour changer de plateforme.

Dans ce cours, nous utiliserons la librairie graphique SFML (Simple and Fast Multimedia Library), dans sa version 2.3 (ce n'est pas la version la plus récente, mais c'est celle installée en salle de TP)

Il s'agit d'une librairie facile d'utilisation, spécialisée dans la réalisation d'applications graphiques en 2D et qui correspond parfaitement à ce dont nous aurons besoin pour le projet final. Écrite pour le C++, elle est compatible avec Windows, Linux et Mac OSX.

La référence de base: la documentation

La documentation d'une librairie est l'outil fondamental du développeur. Dans le cas de l'orienté objet, les interfaces de toutes les classes utiles y seront expliquées et généralement illustrées. On peut comparer une documentation à un commentaire des fichiers headers du code source.

La documentation de SFML 2.3 se trouve sur le site officiel https://www.sfml-dev.org/documentation/2.3/ (il est normalement tout à fait possible de travailler aussi avec la version plus récente 2.4 ou 2.5).

Celle-ci est très détaillée et des exemples sont très souvent donnés. Si vous souhaitez comprendre plus en profondeurs les éléments exposés dans ce document ou aller plus loin, vous y trouverez toutes les réponses que vous cherchez.

Présentation du mini-projet

Afin d'apprendre à utiliser les principaux éléments de SFML, nous allons programmer un classique jeu de "pong". Par la même occasion, on pratiquera encore les bases de la programmation orientée objet ainsi que la compilation séparée.

Les caractéristiques du programme final seront: deux joueurs peuvent s'affronter (sur le même ordinateur), l'un contrôlant le "pad" du haut grâce à la souris, l'autre le "pad" du bas grâce aux flèches du clavier. Les scores des deux joueurs s'affichent à l'écran et sont comptabilisés. La balle est représentée par une image fournie. Celle-ci rebondit contre les parfois gauches et droites et sur les "pads" (selon un comportement naturel, qui sera détaillé plus tard).

Par la suite, toutes les sections "pratiques", de conception du pong, seront sur un tel cadre vert.

Tutorial SFML
Corentin Perret, Jamila Sam - 2013-2019