IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

POO bonne pratique : passer des variables de la taille de la fenêtre


Sujet :

C++

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Décembre 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2022
    Messages : 1
    Par défaut POO bonne pratique : passer des variables de la taille de la fenêtre
    Bonjour,

    Je développe un pong en C++/SDL2 et je souhaiterai le faire correctement.
    J'ai lu avec attention le livre Coder Efficacement.

    J'ai ainsi crée des classes: ball, paddle, collision, et la classe pong.

    Si j'ai bien suivi les cours, normalement, ball, paddle n'ont pas vocation à connaître la taille de la fenêtre dans lequel ils évoluent.

    Si je veux placer la balle au milieu de l'écran (une fois qu'elle est sortie du cadre) je vais alors lui indiquer le milieu de l'écran lorsque je vais appliquer la fonction pour placer la balle à partir de la classe pong qui connaît la taille de la fenêtre via deux variables screenX et screenY:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Ball::resetBall(int posX, int posY);
    appelée ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ball.resetBall(screenX/2, screenY/2);
    Mais si je regarde ma classe collision, elle a besoin des informations sur la fenêtre.

    Alors comment je dois lui les donner ?

    J'ai des pistes, mais que valent-elles ?

    0) je passe par paramètre ces infos comme le cas ci dessus (mais alors je vais avoir des fonctions avec des arguments à rallonge)


    1) Au constructeur au moment de son initialisation ? Mais ce n'est pas modifiable pour plus tard, donc je serais obligé de faire le 2) ?


    2) Je crée une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void  init(int size_x, int size_y)
    qui recupère size_x et size_y et si je modifie la taille de la fenêtre, je rapplique init avec les nouvelles tailles ?
    Or la classe collision aura en mémoire les deux variables size_x et size_y, ce qui est de la duplication ...


    3) Je crée une classe singleton (une grosse variable globale en fait) que j'invoque à chaque fois que j'ai besoin d'une information size_x ou size_y ?
    C'est propre cela ?


    ...


    Car oui, c'est pong, mais si je crée une classe score qui doit afficher les scores, il me faudra bien la aussi connaître la taille de la fenêtre

    Si size_x et size_y sont figées durant toute l'exécution du programme, on peut penser à 1° ?
    mais si après on veuille pouvoir la redimensionner en cours d’exécution, on se retrouve avec une variable qui change presque jamais. (mais qui parfois peut changer)


    Comment faut il faire pour passer ce genre d'information ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 473
    Par défaut
    Je pense que tu considère la fenêtre comme faisant partie intégrante de ton jeux, alors que non, c'est plutôt une vue (une partie visible), la fenêtre n'étant qu'un moyen d'affichage.
    On peut très bien imaginer que l'aire de jeux est délimité par des murs non affichés (situés en dehors de la vue) sur lesquels la balle se comportera comme sur n'importe quel autre obstacle.

    Prend Super Mario Bross par exemple, il est fort probable qu'un niveau soit entièrement chargé, mais que seul la partie ou se trouve le joueur (la vue) soit affiché à l'écran (la fenêtre).

Discussions similaires

  1. Passer des variables d'un dialog à un Doc
    Par thomfort dans le forum MFC
    Réponses: 16
    Dernier message: 03/05/2006, 06h39
  2. Réponses: 6
    Dernier message: 19/12/2005, 13h41
  3. Réponses: 11
    Dernier message: 09/12/2005, 14h59
  4. [C#][XSLT] Passer des variables
    Par Landolsi dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 30/09/2005, 14h26
  5. Réponses: 3
    Dernier message: 03/02/2005, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo