Ajout déplacement

This commit is contained in:
rick 2021-03-18 23:51:00 +01:00
parent b48c21b668
commit d3856fa44c
Signed by: Rick
GPG key ID: 2B593F087240EE99
2 changed files with 29 additions and 1 deletions

View file

@ -2,7 +2,7 @@
Makefile récupéré des fichiers exemples de Devkitpro. 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. Le code est aussi documenté que possible mais certaines bibliothèques ne donnent aucune information sur les fonctions.

View file

@ -9,6 +9,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#define SCREEN_HEIGH 240
#define SCREEN_WIDTH 400
typedef struct typedef struct
{ {
C2D_Sprite spr; C2D_Sprite spr;
@ -51,6 +54,31 @@ int main(int argc, char *argv[])
while (aptMainLoop()) 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 lensemble 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 + dinfos) */
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 */ /* attend que la frame précédente soit afficher avant de rendre la suivante */
C3D_FrameBegin(C3D_FRAME_SYNCDRAW); C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
/* nettoye lécran avec la couleur passée en paramètre */ /* nettoye lécran avec la couleur passée en paramètre */