Tifball : jeu de casse-briques 2d avec directx 9

Description

Ce programme est un jeu de casse-briques avec DirectX 9 et Visual Studio 2005.

On y trouve notamment :
- Déplacements d'images .PNG (ou .BMP) sur un fond d'écran .JPG (DirectX).
- Musique .MP3 et sons .WAV (DirectX).
- Calcul de collisions entre deux objets en mouvement.
- Ajout et récupération des images et des sons depuis un fichier '.resources' et stockage dans l'exécutable.
- Adaptation de la vitesse des objets en fonction du framerate.
- Enregistrement des high scores dans un fichier binaire avec signature MD5.

(Je joins également le projet 'Ressources' qui permet de visualiser comment le fichier TifBall.resources est généré).

Conclusion :


Quelques précisions :

MODES D'EXECUTION
1) Framerate synchronisé à la vitesse de l'écran.
2) Framerate maximal.

Pour ma config (Athlon 1800, 512 RAM, vidéo 128Mo et écran cathodique 85Hz), la solution 1) est la plus fluide (85 images/s constant).
Avec la solution 2), on ne limite pas le nombre d'images par seconde. Dès que le calcul des trajectoires est terminé, on affiche l'image à l'écran et on recommence le prochain calcul. (Je n'utilise pas non plus de 'Timer' qui déclenche l'affichage de l'image toutes les x millisecondes).
De cette manière, j'arrive parfois à plus de 200 images/s, mais comme le framerate varie beaucoup en fonction du nombre d'objets affichés, le jeu est finalement moins fluide.

MUSIQUE
Pour que le menu 'Musique' soit disponible, il suffit de copier un fichier mp3 nommé 'musique.mp3' dans le répertoire de l'exécutable.

IMAGES ET SONS
Ils sont stockés dans le fichier TifBall.resources.
(J'ai supprimé plusieurs éléments du fichier resources, afin de réduire sa taille pour la mise en ligne sur ce site).
Ces fichiers sont ensuite incorporés dans l'exécutable lors de la compilation.
les .PNG (balles, bonus, ...) ont une taille inférieure à 10Ko.
les .JPG (images de fond) ont une taille avoisinant les 200Ko.
les .WAV ont une taille inférieure à 20Ko.

PLANTAGES
Sur la plupart des PC (dont le mien), pas de plantage. Cependant, j'ai constaté des exceptions de DirectSound sur un PC récent. Non débuggé.

LIMITATIONS ET AMELIORATIONS
Encore beaucoup à faire ;)

1) Nombre de balles
Limité volontairement à 40 à cause du ralentissement du jeu lors de la multiplication des balles (le code du bonus 'trois balles' est à améliorer).
S'il n'y avait pas ce ralentissement, le jeu resterait fluide jusqu'à 200 balles environ avec ma config.

2) Levels
Il y a 20 levels. On peut compléter le fichier si on a du courage et de la patience, car c'est pénible ;)
Si on gagne le dernier level, on recommence au dernier level (...)

3) Collisions
- Les collisions sont limitées aux rectangles des images et non aux pixels.
On a donc parfois des 'colles dans le vide' ou des 'collisions à distance' (entre l'extrémité arrondie de la raquette et la balle par exemple).
- L'algo de collision entre les balles et les briques doit pouvoir être optimisé.
On teste des collisions aux endroits où il ne peut pas y en avoir (en dessous du mur de briques par exemple).

4) Vitesse des balles
La vitesse des balles augmente au cours du jeu. Cette augmentation de vitesse est cependant volontairement limitée car lorsque les balles sont trop rapides, elle font des 'bonds' visibles. (Si on augmente vraiment la vitesse, les balles finissent par passer au travers des briques...)

5) DirectX
Sur un PC, malgré l'installation de DirectX 9, le jeu a refusé de fonctionner (snif).
Pour résoudre le problème il a fallu copier les .DLL de DirectX directement dans le répertoire de l'exécutable :
- Microsoft.DirectX.AudioVideoPlayback.dll
- Microsoft.DirectX.Direct3D.dll
- Microsoft.DirectX.Direct3DX.dll
- Microsoft.DirectX.DirectSound.dll
- Microsoft.DirectX.dll

(...)

Si vous avez des remarques, des questions ou des améliorations à apporter n'hésitez pas à m'en faire part !

TiFred

lepiote21@free.fr

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.