MTProd > Dev4all > Articles > Programmation de jeux > Généralités > Déplacements & Directions dans un jeu 2D > 2 Mise en pratique
Rechercher25 Personnes en-ligne

Déplacements & Directions dans un jeu 2D

2  Mise en pratique

La mise en pratique : en voilà un sujet qu'il est intéressant
Nous allons voir dans ce chapitre comment changer la direction du sprite et le faire avancer.



2.1  Changer la direction du sprite

Rappellez-vous dans le 1er chapitre, nous avons déclaré et initialisé notre sprite balle avec les valeurs suivantes :

balle.posX = 200;
balle.posY = 200;
balle.dir = 0;

Notre sprite se trouve donc à la position (200;200) et dans la direction 0 (vers le haut).
Pour changer de direction, rien de plus simple, l'action se limite à ajouter 1 ou soustraire 1 à la variable dir, comme ceci :

// Rotation droite
if ( key & KEY_RIGHT )
    balle.dir += 1;

// Rotation gauche
else if ( key & KEY_LEFT )
    balle.dir -= 1;

Attention : Il nous faut tout de même vérifier que notre variable dir ne soit pas inférieur à 0 ou supérieur/égal à NBRE_DIRS, voilà donc le code qui effectue ces vérifications, et les corrections si nécessaire :

// Vérifie les dépassements de directions
// Si la direction est inférieure à zéro, par exemple '-1' nous ajoutons le nombre de directions (NBRE_DIRS) à la direction actuelle, par exemple pour '-1 + 40' cela nous donnera '39' l'objet à fait un tour
if ( balle.dir < 0 )
    balle.dir += NBRE_DIRS;

// La meme chose qu'avant mais à l'inverse
else if ( balle.dir >= NBRE_DIRS )
    balle.dir -= NBRE_DIRS;

C'est fantastique, notre sprite peut désormais changer de direction, WoaW
Enfin bref, voyons maintenant comment le faire avancer dans cette direction !




2.2  Faire avancer le sprite

C'est maintenant que nous allons utiliser nos fameux tableaux de directions : dirX et dirY, voyez plutot :

// On avance
if ( key & KEY_UP )
{
    balle.posX += dirX[balle.dir];
    balle.posY += dirY[balle.dir];
}

// On recule
else if ( key & KEY_DOWN )
{
    balle.posX -= dirX[balle.dir];
    balle.posY -= dirY[balle.dir];
}

Lorsque l'on appuie sur KEY_UP on additionne à posX la valeur du tableau dirX à la position dir (balle.posX += dirX[balle.dir]).
La même chose pour posY (balle.posY += dirY[balle.dir]).

Comme vous pourrez le constater en lançant l'exemple, notre sprite se déplace parfaitement dans la direction voulue.





<<  1  Définition, Déclaration et InitialisationSommaire 

 Accés rapide

1  Définition, Déclaration et Initialisation
2  Mise en pratique

Changer la direction du sprite

Faire avancer le sprite

Voir le sommaire complet

 Liens utiles

  • Publier un article
  • Envoyer cette page
  • Ecrire à l'auteur

  •  Mini-Chat

    Miuka (21h15): Coin coin de 2014
    Miuka (21h15): Des gens qui ont migré sur le forum Clickteam ou ailleurs ?
    Strike (09h45): Salut les vieux !
    Hikarion (12h46): Salut les djeunz
    Hikarion (13h38): A qui profite le scandale ?
    Hikarion (13h44): le chat irc est toujours actif ?
    Exodraw2020 (00h31): Houlala ça fait 15ans que je n'avais pas mis les pieds ici ! :
    Exodraw2020 (22h31): Dev4all 2021 ! : ) on y crois !
    Exodraw2020 (22h32): Je viens de publier et présenter mon jeu DaddHunter
    Exodraw2020 (22h33): rangé dans la catégorie jeu d'action aventure, du coup Action

    Votre message



     Archives

     Dev4all Newsletter

    Restez à jour avec la newsletter mensuelle !

    Votre e-mail


    1805 abonnés

     Recommander Dev4all

    Recommandez Dev4all à un ami. Cela fera grandir notre communauté !

    E-mails de vos amis




    [ Accueil | S'inscrire | Mon Dev4all | Communauté | Téléchargements | Articles | Forums | Chat ]

    [ A propos de Dev4all | Aide | La charte Dev4all | Contact ]

    © 2000-2022 MTProd. Tous droits réservés.
    L'utilisation de Dev4all implique l'acceptation et le respect de la charte Dev4all.