ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 2
        • Calendrier groupes 1, 3
        • Structure du cours
        • Évaluations
        • Matériel à se procurer
        • Les profs
          • Marc-Olivier Tremblay
          • Mathieu Bergeron
        • Module 1.1: installation + trier des cartes
        • Module 1.2: rappels POO
        • Module 1.3: tableau d'objets
        • Examen 1
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Équipes
          • Horaire groupe 1
          • Horaire groupe 2
          • Horaire groupe 3
          • Groupe 1
          • Groupe 2
          • Groupe 3
        • Projets vedettes 2022
        • Projets vedettes 2023
        • Projets vedettes 2024
        • Projets vedettes 2025
        • Survol
        • Structure
        • Calendrier
        • Calendrier des séances
        • Évaluations
        • Exemples de jeu
        • Exemples de pages
        • Réponses à vos questions
        • Module 1: créer le projet
        • Module 2: concevoir l'application
        • Module 3: vues NtroFx
        • Module 4: modèle et navigation
        • Module 5: ajouter le dorsal, modifier le modèle
        • Module 7: améliorer l'affichage
        • Module 8: jeu en 2d
        • Module 9: client/serveur
        • Module 10: plusieurs instances du même modèle
        • TP1
        • Examen 1
        • TP2
        • Examen 2
        • Projet de fin de session
        • Calendrier
        • Structure du cours
        • Évaluations
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
        • 03: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 04: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 05: PowerPoint
          • TP02: PowerPoint (10%)
        • 06: Examen Word (20%)
        • 07: Excel
        • 08: Excel
        • 09: Excel
          • TP03: Excel (15%)
        • 10: Excel
        • 11: Examen Excel (20%)
        • 12: Access
        • 13: Access
        • 14: Access
        • 15: Examen Access
      • Sondage H2023 (dept. info)
      • Vision H2023 (dept. info)
      • P1) exercices interactifs de lecture
      • P2) transition Excel vers Python
        • Atelier 2: un exemple
      • Jquery
      • Jquery Ui
      • Point de vue sur l'IA
    Message

    Définir et déclarer le message #

    1. Dans le paquet pong.commun, créer le paquet messages

    2. Dans le paquet message, créer la classe MsgAjouterRendezVous

    3. Dans VSCode, s’assurer que l’arborescence de mon projet est comme suit

    4. Ajuster la signature de MsgAjouterRendezVous qui doit hériter de Message

      public class MsgAjouterRendezVous extends Message<MsgAjouterRendezVous> {
      
    5. Ajouter l’attribut premierJoueur et une méthode pour mémoriser sa valeur

      public class MsgAjouterRendezVous extends Message<MsgAjouterRendezVous> {
      
          // ajouter
          private Joueur premierJoueur;
      
          public MsgAjouterRendezVous setPremierJoueur(Joueur premierJoueur) {
              this.premierJoueur = premierJoueur;
      
              return this;
          }
      
          // ...
      
      
    6. Dans AppPong, déclarer le message

      public class AppPong implements NtroAppFx {
      
          // ...
      
          @Override
          public void registerMessages(MessageRegistrar registrar) {
      
              registrar.registerMessage(MsgAjouterRendezVous.class);
          }
      
      • NOTES:
        • le message est partagé entre le frontal et le dorsal
    7. Au besoin, corriger les erreurs de compilation

    Créer et envoyer le message #

    1. Dans VueFileAttente, créer une méthode d’où envoyer les messages

      public class VueFileAttente extends ViewFx {
      
          // ...
      
          @Override
          public void initialize() {
      
              // ...
      
              initialiserBoutonSInscrire();
          }
      
      
          private void initialiserBoutonSInscrire() {
      
      
          }
      
      
    2. Ajouter le capteur d’événement pour boutonSInscrire

      public class VueFileAttente extends ViewFx {
      
          // ...
      
      
          private void initialiserBoutonSInscrire() {
      
              // ajouter
              boutonSInscrire.setOnAction(evtFx -> {
      
      
              });
          }
      
          // ...
      
      
    3. Pour chaque clic, demander à la session d’envoyer un message

      public class VueFileAttente extends ViewFx {
      
          // ...
      
      
          private void initialiserBoutonSInscrire() {
      
              // ajouter
              SessionPong session = Ntro.session();
      
              boutonSInscrire.setOnAction(evtFx -> {
      
                  // ajouter
                  session.envoyerMsgAjouterRendezVous();
      
              });
          }
      
          // ...
      
      
      • NOTE: on délègue à la session, parce qu’on veut que le joueur mémorise le sessionId
    4. Dans SessionPong, créer la méthode pour envoyer le message

      public class SessionPong extends Session<SessionPong> {
      
          // ...
      
      
          public void envoyerMsgAjouterRendezVous() {
              Ntro.newMessage(MsgAjouterRendezVous.class)
                  .setPremierJoueur(MaquetteJoueurs.joueurAleatoire(this.sessionId()))
                  .send();
          }
      
    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike