Moving Ball > Problème de test de sortie d'écran non effectué

Rapidement, parce-que je file au TAF là…

1. La raquette sort de l’écran…

Normal, tu ne la replaces pas correctement… Ce n’est pas :

posY = gb.display.height();

Mais :

posY = gb.display.height() - hauteur;

2. Passer la variable hauteur au modèle Paddle

Il suffit d’ajouter un argument h au constructeur :

Paddle(uint8_t posX, uint8_t posY, uint8_t h)
: posX(posX)
, posY(posY)
, vitesse(V)
, hauteur(h) // <-- la hauteur de la raquette est donc paramétrable
, largeur(L)
{}

Ici tu ne peux utiliser la constante H (hauteur fixée par défaut) définie dans Paddle, puisque ton menu induit une hauteur variable…

3. Des couleurs différentes pour les raquettes

Même chose, tu peux ajouter un argument color au constructeur, que tu dois stocker dans ton modèle pour l’utiliser au moment de dessiner la raquette :

struct Paddle {

    static const uint8_t V = 2;
    static const uint8_t L = 3;

    uint8_t  posX;
    uint8_t  posY;
    uint8_t  vitesse;
    uint8_t  hauteur;
    uint8_t  largeur;
    Color    color; // <-- chaque raquette a sa propre couleur
    
    Paddle(uint8_t posX, uint8_t posY, uint8_t h, Color color) // <-- paramétrée ici
    : posX(posX)
    , posY(posY)
    , vitesse(V)
    , hauteur(h)
    , largeur(L)
    , color(color) // <-- on l'affecte au modèle ici
    {}
    
    void up()   { posY -= V; }
    void down() { posY += V; }

    void update() {
        uint8_t sh = gb.display.height();
             if (posY < 0)            posY = 0;
        else if (posY + hauteur > sh) posY = sh - hauteur;
    }

    void draw() {

        gb.display.setColor(color); // <-- et on fixe la bonne couleur à l'affichage
        gb.display.fillRect(posX, posY, largeur, hauteur);

    }

};

Il faut que tu poses un peu et que tu reprennes un à un les concepts que je t’ai présentés… Tu disposes maintenant de toute la logique pour parvenir à trouver les réponses à tes questions tout seul il me semble. Tu ne crois pas ? Tu as toutes les briques, il ne reste plus qu’à les assembler correctement :wink:

Tu peux aussi t’inspirer des exemples traités dans mon tuto Handling images on the Gamebuino Meta qui utilisent les mêmes concepts… Notamment ceux des chapitres :

  • How to display your images
  • How to move your sprite