ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 3
        • Calendrier groupes 1, 2
        • 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
          • URL dépôt Git à remettre
        • Module 1.3: tableau d'objets
        • Examen 1
        • Validation des ateliers
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Validation des ateliers
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Validation des ateliers
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Validation des ateliers
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Validation des ateliers
        • Travail de rattrapage
        • Projets vedettes
          • Contrat gr1
          • Contrat gr2
          • Contrat gr3
        • Survol
        • Structure
        • Calendrier semaines
          • Calendrier gr1
          • Calendrier gr2
          • Calendrier gr3
        • Utilisation IA
        • Évaluations
        • Exemples de pages
        • Exemples de jeu
        • Jeux choisis
        • 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 6: améliorer l'affichage
        • Module 7: jeu en 2d
        • Module 8: client/serveur
        • Module 9: plusieurs instances du même modèle
        • Guide de style 4F5
        • TP1
        • Examen 1
        • TP2
        • Examen 2
        • Projet de fin de session
        • Calendrier
        • Évaluations
        • Structure du cours
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 03: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 04: Word
        • 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
      • Index
      • Point de vue sur l'IA
    Tutoriel 7: analyse
    • Tutoriel 7: analyse
      • Comparer le comportement de dep06 et dep07
      • Comparer les graphes de tâches de dep06 et dep07
      • Comparer les fichiers dep06 et dep07
        • Nouveaux fichiers dans dep07
        • Fichiers différents
          • TachesB
          • TachesC
          • VueB
          • FrontalDepart
          • dev.css
          • vue_b.fxml
      • « Tracer » les étapes pour faire bouger la balle

    Tutoriel 7: analyse #

    Comparer le comportement de dep06 et dep07 #

    dep06, VueB

    dep07, VueB

    $ sh gradlew dep06

    $ sh gradlew dep07

    • Affichage statique sur la VueB
    • On a un Monde2d en mouvement sur la VueB

    Comparer les graphes de tâches de dep06 et dep07 #

    Frontal

    dep06/_storage/graphs/frontend.png

    dep07/_storage/graphs/frontend.png

    • On ajoute la tâche DonneesVueB pour créer les données de la vue (contenant le Monde2d)

      • NOTE: la tâche s’exécute à chaque fois qu’on ouvre la VueB
        • autrement dit: on a un nouveau Monde2d à chaque fois qu’on navigue vers VueB
    • On ajoute un groupe de tâches TachesE et une tâche tacheE2 qui réagit au temps qui passe avec .waitsFor(clock().nextTick())

    Dorsal

    dep06

    dep06/_storage/graphs/backend.png

    dep07

    dep07/_storage/graphs/backend.png

    • C’est le même Dorsal (pas de nouvelle fonctionnalité)

    Comparer les fichiers dep06 et dep07 #

    • Comparer les répertoires dep06/src et dep07/src avec VSCode:

    Nouveaux fichiers dans dep07 #

    paquet monde2d avec:

    • MondeDepart2d
    • Balle2d
    • Terrain2dDepart

    C’est le Monde2d avec deux types d’Objet2d: une balle et un terrain.

    • CanvasB

    Un contrôle personnalisé qui hérite de ResizableWorld2dCanvasFx

    • DonneesVueB

    Les données de la VueB. C’est là que le Monde2d va vivre en mémoire

    • TachesE

    Un groupe de tâches pour permettre au Monde2d de réagir au temps qui passe

    Fichiers différents #

    TachesB #

    • Au démarrage, naviguer vers VueB plutôt que VueA:

    TachesC #

    • On ajoute des inputs.cancelTask(...) pour stopper l’affichage du Monde2d quand il est pas affiché

    VueB #

    • On ajoute le CanvasB et une métode pour afficher le Monde2d sur le canvas

    FrontalDepart #

    • On ajoute de créer le groupe de tâches TachesE

    dev.css #

    • On retire les images de fond pour les HBox/VBox

    vue_b.fxml #

    • On remplace le Label par le CanvasB

    « Tracer » les étapes pour faire bouger la balle #

      Étape Détails
    Préalables

    Comme avant: création des tâches, des vues, etc.

    1

    tacheC2 affiche la VueB

    2

    tâche DonneesVueB crée les données

    Après chaque navigation vers VueB, la tâche DonneesVueB est ré-exécutée

    • on va créer des nouvelles données à chaque fois qu’on affiche la VueB

    • (incluant un nouveau Monde2d à chaque affichage)

    3

    tacheE2 réagit au temps qui passe

    Environs 60 fois par secondes:

    • demander au Monde2d de réagir au temps qui passe

      • mise à jour des attributs de la Balle2d
    • demander au Monde2d de s’afficher sur le CanvasB

      • affichage de la Balle2d à son nouvel emplacement
    4

    Méthode onTimePasses

    Le Monde2d va appeler chaque Objet2d pour que l’objet réagisse au temps qui passe

    • par défaut: l’objet2d est déplacé selon sa vitesse (et son accélération)
    5

    Méthode drawOnWorld

    Le Monde2d va appeler chaque Objet2d pour que l’objet s’affiche

    • par défaut: rien. Il faut coder cette méthode sinon l’objet ne s’affiche pas
    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Tutoriel 7: analyse
      • Comparer le comportement de dep06 et dep07
      • Comparer les graphes de tâches de dep06 et dep07
      • Comparer les fichiers dep06 et dep07
        • Nouveaux fichiers dans dep07
        • Fichiers différents
          • TachesB
          • TachesC
          • VueB
          • FrontalDepart
          • dev.css
          • vue_b.fxml
      • « Tracer » les étapes pour faire bouger la balle