Téléchargé 2 fois
Vote des utilisateurs
2
0
Détails
Licence : Non renseignée
Mise en ligne le 1er mai 2015
Plate-forme :
Windows
Langue : Français
Référencé dans
Navigation
Défi Pascal 2014 "screensaver" - Projet de EpiTouille : SSFirework
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 :
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
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
Magnifique présentation, messire Epitouille. Je m'en vais de ce pas télécharger vos sources.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.