Bonjour,

Je vous propose un nouvel élément à utiliser : Défi Pascal 2014 "screensaver" - Projet de EpiTouille : SSFirework.

Défi Pascal 2014 - SSFirework



Description

SSFirework est un économiseur d'écran créé par Epitouille dans le cadre du défi pascal 2015. L'économiseur reproduit l'effet de feux d'artifices (firework) en utilisant un moteur de particules très léger.

Il utilise OpenGL et SDL pour le contexte et gère lui-même les évènements ce qui le rend autonome et multi-plateforme.

Le projet comporte 2 unités ainsi que le fichier source principal :
  • UWindow.pas : unité permettant de gérer la fenêtre et ses interactions ;
  • UFirework.pas : unité contenant la classe Firework et permettant de gérer un feu d'artifice ;
  • main.pas : fichier source principal qui appelle la logique du jeu.

Contenu du zip

Le zip contient les fichiers sources, les DLL de la SDL et d'OpenGL ainsi qu'un binaire compilé depuis Windows 7.

Compilation

Le programme ne requiert aucune unité et aucune bibliothèque statique que celles fournies par défaut par FreePascal. La compilation est alors très simple.
fpc main.pas -ofirework.exe
suffit à générer un exécutable, car freepascal va compiler les dépendances lui-même.

Remarque

J'ai remarqué que FreePascal sous Linux était un poil différent : si on recompile main.pas alors que une unité a été changée, il ne va pas automatiquement recompiler l'unité et linker avec le .o de l'ancienne version.

Donc sous Linux, penser à recompiler les unités si modifiées :
fpc UWindow.pas && fpc UFirework.pas && fpc main.pas -ofirework.exe

Exécution et installation

Pour tester le screensaver il suffit de lancer l'exécutable.

Sous Windows

Version(s) testée(s) : 7 (64b) ATI / 8.1(64b) ATI
Renommer l'exécutable en .scr ou directement
fpc main.pas -ofirework.scr
Vous pouvez le tester avec clic droit sur le .scr > tester.

L'écran de veille ne fonctionne pas avec le gestionnaire d'écran de veille de Windows car il faut implémenter certaines fonctions de l'API Win32.
Mon but était de faire quelque chose le plus portable possible.

Sous Linux

Version(s) testée(s) : archlinux testing 64bits carte ATI
Gestionnaire de screensaver : xscreensaver
Copier l'exécutable (ou lien symbolique) dans /usr/lib/xscreensaver et dans /usr/bin/screensaver.
Attention aux permissions.
Créer un fichier /usr/share/xscreensaver/config/firework.xml contenant la description du fond d'écran. (doc xscreensaver)

Documentation

Le code est documenté avec la norme utilisée par Doxygene.

Avenir

En parallèle, j'ai commencé à créer mon propre screensaver manager car j'ai vu que chaque gestionnaire demandait d'implémenter une norme différente ce qui rend le développement d'un économiseur d'écran multi-plateforme irréalisable.

Remerciements

Je remercie l'équipe Pascal pour son investissement et qui m'a permis de remettre les doigts dans du pascal ce que je n'avais pas fait depuis plus de 2 ans et avant, ça remonte au lycée

Bonne chance à tous les concurrents.

Epitouille

Qu'en pensez-vous ?