From d3856fa44ce24af14b2a13bbfe25d77e8b87fecf Mon Sep 17 00:00:00 2001 From: rick Date: Thu, 18 Mar 2021 23:51:00 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20d=C3=A9placement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- source/main.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eb7536b..e9a7d36 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Makefile récupéré des fichiers exemples de Devkitpro. -Programme affichant un sprite basique. +Programme affichant un sprite basique et de le déplacer. Le code est aussi documenté que possible mais certaines bibliothèques ne donnent aucune information sur les fonctions. diff --git a/source/main.c b/source/main.c index deb9728..af5f995 100644 --- a/source/main.c +++ b/source/main.c @@ -9,6 +9,9 @@ #include #include +#define SCREEN_HEIGH 240 +#define SCREEN_WIDTH 400 + typedef struct { C2D_Sprite spr; @@ -51,6 +54,31 @@ int main(int argc, char *argv[]) while (aptMainLoop()) { + /* on capte le boutons pressé */ + hidScanInput(); + + /* on récupère le bouton qui est maintenu + * pour déplacer le sprite */ + u32 bouton_presse = hidKeysHeld(); + + /* hidKeysHeld retourne l’ensemble des touches pressées. + * ces opérations bit à bit sont nécessaires pour extraire la touche voulue.*/ + if (bouton_presse & KEY_DOWN) + /* on récupère la position du sprite (lire la doc pour + d’infos) */ + if (m_blue.spr.params.pos.y != SCREEN_HEIGH) + /* permet de déplacer le sprite en mettant à jour son x et son y + * on indique la vitesse de x et y après en pixel/frame (je suppose) */ + C2D_SpriteMove(&m_blue.spr, 0, 5); + if (bouton_presse & KEY_UP) + if (m_blue.spr.params.pos.y != 0) + C2D_SpriteMove(&m_blue.spr, 0, -1); + if (bouton_presse & KEY_LEFT) + if (m_blue.spr.params.pos.x != 0) + C2D_SpriteMove(&m_blue.spr, -1, 0); + if (bouton_presse & KEY_RIGHT) + if (m_blue.spr.params.pos.x != SCREEN_WIDTH) + C2D_SpriteMove(&m_blue.spr, 1, 0); + /* attend que la frame précédente soit afficher avant de rendre la suivante */ C3D_FrameBegin(C3D_FRAME_SYNCDRAW); /* nettoye l’écran avec la couleur passée en paramètre */