Voici quelques suggestions pour améliorer l’application et la transformer en un jeu fonctionnel :
Joueur
-
Ajouter une nouvelle classe
Joueur
dans la partie client, qui déssine et gère un joueur, sous forme d’un carré par exemple -
Modifier le programme principal pour qu’il ajouter une instance de
Joueur
au milieu du canvas -
Ajouter une capture des touches du clavier pour déplacer le joueur dans le canvas
-
Utiliser l’API EventTarget, les Listeners et les Dispatch pour gérer, entre autre, les événements de collision entre le joueur et les balles
-
Implémenter les fonctions de déplacements du joueur :
- Au clavier : flèches directionnelles, touches WASD, touches ZQSD, touches IJKL, etc.
- À la souris : déplacer le joueur en fonction de la position de la souris
- Au toucher : déplacer le joueur en fonction de la position du doigt sur l’écran tactile
- Avec une manette : en utilisant l’API Gamepad
-
Possibilité de jouer à plusiers joueurs en même temps
Ennemis
- Lorsque le jeu démarre, ajouter un ennemi (une instance de la classe
Balle
) toutes les 5 secondes dans le canvas - Ajouter une détection de collision entre le joueur et les balles
- Ajouter un score qui s’incrémente au fur et à mesure que le joueur évite les balles
- Si le joueur touche une balle, le jeu s’arrête et le score est affiché
- Alternativement, le joueur pourrait avoir une barre de vie qui diminue à chaque collision avec une balle
- Vagues d’ennemis : ajouter des vagues d’ennemis qui apparaissent à intervalles réguliers, avec des vitesses, formes et des tailles de balles différentes
Score
Lorsque le jeu s’arrête :
- Si le joueur est déjà identifié, envoyer le score au serveur s’il est supérieur à son meilleur score
- Si le joueur n’est pas identifié :
- Proposer à l’utilisateur de s’identifier ou de créer un compte
- Si l’utilisateur s’identifie, récupérer son meilleur score et comparer avec le score actuel
- Si le score actuel est supérieur, envoyer le score au serveur et l’enregistrer dans la base de données
Modes de jeu
Ajouter des modes de jeu différents :
- Un mode de jeu infini où les balles apparaissent de plus en plus rapidement
- Un mode de jeu chronométré où le joueur doit éviter un maximum de balles en un temps limité
- Un mode de jeu avec des niveaux où le joueur doit atteindre un certain score pour passer au niveau suivant
- Des modes faciles, moyens et difficiles avec des vitesses de balles différentes, des tailles de canvas ou des balles différentes, etc.
- etc.
Interface
- Ajouter un écran de démarrage avec un bouton “Jouer” pour lancer le jeu
- Ajouter un écran de fin de jeu avec le score du joueur et un bouton “Rejouer”
- Ajouter un menu avec des options pour régler le volume, la vitesse du jeu, etc.
- etc.
Power-ups
Ajouter des power-ups qui apparaissent aléatoirement dans le canvas et qui donnent des bonus au joueur :
- Un power-up qui augmente la vitesse du joueur, par exemple sous forme de triangle
- Un power-up qui donne une vie supplémentaire au joueur, par exemple sous forme de coeur
- Un power-up qui ralentit les balles ennemies, par exemple sous forme de sablier
- Un power-up qui détruit toutes les balles ennemies à l’écran, par exemple sous forme de bombe
- etc.
Power-downs
Ajouter des power-downs qui apparaissent aléatoirement dans le canvas et qui donnent des bonus au joueur :
- Un power-down qui diminue la vitesse du joueur, par exemple sous forme de triangle inversé
- Un power-down qui enlève une vie au joueur, par exemple sous forme de crâne
- Un power-down qui accélère les balles ennemies, par exemple sous forme de sablier inversé
- Un power-down qui ajoute des balles ennemies supplémentaires, par exemple sous forme de bombe inversée
- etc.
Autres suggestions
- Si vous préférez, vous pouvez créer un jeu supplémentaire, par exemple un jeu de type Arkanoid avec des briques et une balle qui rebondit plutôt qu’un jeu d’évitement de balles. Vous pourrez alors réutiliser une partie du code existant, notamment les classses
Balle
,Joueur
,Canvas
, etc. - Vous pouvez ajouter des niveaux de difficulté qui augmentent la vitesse des balles ou le nombre d’ennemis à éviter.
- On pourrait modifier l’application pour que le fichiers index.html ne soit plus statique mais généré avec pug ou un autre moteur de template.
- Rendre l’application multi-joueurs en ajoutant un mode de jeu en ligne
- Réécrire le jeu en Typescript
- etc.
Conclusion
Dans ce cours module, vous avez appris les bases pour développer une application client/serveur avec Express et MongoDB, et pour implémenter un jeu simple en utilisant l’API Canvas.
Vous avez appris à :
- Créer une application client/serveur avec Express et MongoDB
- Définir des endpoints pour gérer les utilisateurs et les scores
- Gérer des utilisateurs et des scores avec MongoDB
- Implémenter des fonctionnalités de jeu comme l’évitement de balles et la gestion des collisions avec l’API Canvas
Nous espérons que ce tutoriel vous a permis de découvrir de nouvelles technologies et de vous amuser à développer un jeu !