Introduction
Aujourd’hui nous allons voir comment bloquer le déplacement d’un sprite sur Game Boy.
Nous continuons notre série de tutoriels sur la création de jeux Game Boy avec GBDK. Dans cette session, nous allons apprendre à empêcher un sprite de dépasser les bords de l’écran.
Je vous invite à aller voir l’article précédent si ce n’est pas encore fait pour avoir les bases du déplacement des sprites.
Problème Initial
Lors de notre dernière vidéo, nous avons observé que notre sprite continuait à se déplacer hors de l’écran si nous maintenions le bouton directionnel appuyé. Pour les jeux vidéo, il est crucial de bloquer ce mouvement pour que le sprite reste à l’intérieur des limites de l’écran.
Réglage des Déplacements
À Gauche
Pour empêcher le sprite de sortir par la gauche, nous devons ajouter une condition dans notre code. Voici ce que vous devez faire :
Condition de Déplacement : Ajoutez une condition pour vérifier que la position X du sprite est supérieure à 8.
Note importante : Sur Game Boy, il y a un décalage de 8 pixels sur le bord gauche. Cela signifie que notre repère commence à 8 sur l’axe des X et non pas à 0.
Donc, nous devons vérifier que la position X est supérieure à 8 pixels.
Copier le code:
if (joy & J_LEFT && position_X > 8) {
position_X -= 1;
}
En Haut
Pour empêcher le sprite de sortir par le haut :
Condition de Déplacement : Ajoutez une condition pour vérifier que la position Y du sprite est supérieure à 16.
Note importante : Sur Game Boy, il y a un décalage de 16 pixels sur le bord du haut. Cela signifie que notre repère commence à 16 sur l’axe des Y et non pas à 0.
Copier le code :if (joy & J_UP && position_Y > 16) {
position_Y -= 1;
}
À Droite
Pour empêcher le sprite de sortir par la droite :
Tout d’abord, il faut prendre en compte la largeur de l’écran de 160 pixels.
Mais il faut aussi prendre la compte la largeur du sprite qui est de 16 pixels.
Enfin, ne pas oublier le décalage de 8 pixels sur l’axe des x.
- Décalage et Taille du Sprite : Ajoutez le décalage de 8 pixels et soustrayez la taille du sprite (par exemple, 8 pixels).
Copier le code :
if (joy & J_RIGHT && position_X < (160 + 8 - 16)) { //largeur écran + décalge - largeur du sprite position_X += 1;
}
En Bas
Pour empêcher le sprite de sortir par le bas :
Tout d’abord, il faut prendre en compte la hauteur de l’écran de 144 pixels.
Mais il faut aussi prendre la compte la hauteur du sprite qui est de 16 pixels.
Enfin, ne pas oublier le décalage de 16 pixels sur l’axe des y.
Copier le code:
if (joy & J_DOWN && position_Y < (144 + 16 - 16)) { //hauteur écran + décalge - hauteur du sprite position_Y += 1;
}
Compilation et Test
Après avoir ajouté ces conditions, compilez votre code et testez-le. Si tout est correctement configuré, votre sprite devrait maintenant rester à l’intérieur des bords de l’écran sans problème.
Conclusion
En suivant ces étapes, vous avez maintenant les bases pour gérer les déplacements d’un sprite sur l’écran de la Game Boy. Rappelez-vous qu’il y a un décalage de 8 pixels à gauche et de 16 pixels en haut. Ces décalages sont cruciaux pour le positionnement correct des sprites.
Prochaine Étape
Dans la prochaine vidéo, nous ajouterons des décors à notre jeu. Assurez-vous de vous abonner à la neswletter de Studio40A pour ne rien manquer.