Pour cette partie de l’exercice, nous allons générer les canards 🦆 qui feront office de cibles dans le cadre du jeu.
Avant de commencer cette partie, assurez-vous d’avoir bien complété l’introduction, car nous partirons des éléments contenus dans celle-ci.
Aperçu du résultat 👇
Matériel
Médias 🖼️
Requis
Il faudra générer plusieurs canards, nous commencerons donc par créer une nouvelle classe JavaScript intitulée
Duck
et nous la placerons avant la classeGame
afin qu'elle existe en premier.Créez une première méthode intitulée
randomY
. Lorsqu'appelée, cette méthode devrait retourner un nombre sans décimales entre 0 et 250.
Si votre méthode est bien implémentée, vous devriez être en mesure de l'appeler dans la console CodePen via les commandes suivantes:var duck = new Duck();
afin de créer une instance de votre classe et ensuiteduck.randomY()
afin d'appeler votre méthode à partir de votre nouvelle instance.
À ce stade-ci, un nombre entre 0 et 250 devrait afficher dans votre console.Créez-vous maintenant différentes propriétés dans le constructeur:
alive
ayant la valeurtrue
, puisqu'au départ chaque canard devrait être vivant.speed
ayant la valeur4
. Cette valeur correspond au nombre de secondes nécessaires au canard afin de traverser le jeu ⏲.game
correspondant à l'élément HTML ayant la classe.game
afin de pouvoir faire référence à cet élément au besoin.el
etanimation
ayant la valeurnull
pour l'instant. (Nous leur donnerons une vraie valeur plus tard.)y
ayant comme valeur un objet JavaScript ayant les propriétés enfantsstart
etend
. Chacune de ces propriétés devraient appeler la méthoderandomY
afin de contenir un nombre aléatoire. Ces nombres correspondront à la position de départ et de fin du canard sur l'axe des Y ↕️.
Créez une nouvelle méthode intitulée
create
et à partir du constructeur appeler cette méthode.À l'intérieur de la méthode
create
, créez un nouveau div et stockez-le dans la propriétéel
. Ainsi, vous pourrez y faire référence au besoin.Ajoutez à cet élément la classe
.duck
. Cette classe lui donnera l'apparence d'un canard 🦆.Finalement, pour que votre nouvel élément soit visible, insérez-le dans l'élément
.game
.
À ce stade-ci, si vous inscrivez la commandevar duck = new Duck()
dans la console, vous devriez voir un canard apparaitre en haut à gauche de votre jeu.Dans votre classe
Game
, allez dans la méthodenewRound
et créez une nouvelle instance de votre classeDuck
. Ainsi, au début de chaque nouvelle ronde un canard sera généré.De retour dans la classe
Duck
, créez une animation GSAPfromTo
dans la méthodecreate
et stockez-la dans la propriétéanimation
afin de pouvoir y faire référence au besoin.Au départ de votre animation, déplacez votre canard l'extérieur du jeu (-72px) ⬅️ et attribuez lui une valeur de Y correspondant à la valeur contenue dans la propriété
y.start
. À la fin de l'animation, déplacez le canard sur l'axe des X d'une largeur équivalente à la largeur du jeu (512px) ➡️ et attribuez-lui une valeur de Y correspondant à la valeur contenue dans la propriétéy.end
. La durée de l'animation doit correspondre à la propriétéspeed
et qu'aucun easing ne doit être présent.Créez maintenant une méthode intitulée
win
qui sera appelée lorsque le canard réussira à traverser le jeu sans se faire tirer dessus. Lorsque cette méthode est appelée, effacez l'élément HTML stocké dans la propriétéel
et à partir de votre variablegame
appelez la méthodefail
afin d'indiquer à l'usager qu'il a échoué.Créez une méthode
lose
. Cette méthode sera appelée lorsque le canard se fait tirer dessus. Toutes les actions contenues dans cette méthode devront s'effectuer uniquement si le canard est toujours vivant (alive) au moment de se faire tirer dessus.Modifiez la valeur de la propriété
alive
àfalse
afin que le canard ne puisse plus se faire tirer une 2e fois.Mettez l'animation GSAP stockée dans la propriété
animation
sur pause afin que le canard arrête d'avancer.Ajoutez la classe
lose
au canard afin que son animation sprite sheet se mette à jour.Créez une nouvelle animation GSAP sur le canard lui donnant une nouvelle position sur les Y de 350 afin de simuler sa chute. Cette animation doit durer une seconde et s'effectuer sans easing.
Lorsque cette animation est terminée, le canard devrait être caché derrière l'herbe, effacez alors l'élément HTML stocké dans la propriété
el
et à partir de votre variablegame
appelez la méthodesuccess
afin d'indiquer à l'usager qu'il a réussi.
À la fin du constructeur, écouter si le canard se fait cliquer dessus. Si tel est le cas, appelez la méthode
lose
que vous venez de créer.Ajoutez propriété CSS nécessaire afin que le canard ne soit pas visible lorsqu'il dépasse du jeu.
Bonus
Vous avez fini rapidement? Pourquoi ne pas en profitez pour bonifier votre jeu!
Dans le constructeur de la classe
Duck
, pigez si le canard doit commencer à gauche ou à droite. S'il commence à droite, ajoutez-lui une classe faisant en sorte que sa tête pointe dans la bonne direction et modifiez son animation de sorte qu'il traverse le jeu de droite à gauche ⬅️.Lorsque la méthode
lose
est appelée, déclenchez le son suivant afin de reproduire le son associé à la chute du canard 🔊: