L3 Miage 2022-2023 Introduction à JavaScript et aux API W3C standards

De $1

Version de 19:04, 28 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Séance 1 : introduction à JavaScript, rappels, outils, Moocs de référence

Supports de cours

Live coding : environnement de développement, rappel sur les fonctions, les objets, les classes, intro aux modules, le DOM, les événements...

TP1 - Ecriture d'un jeu de type Mach3 à l'aide du DOM

  • Sujet du TP : dans cette première version on va commencer à coder un jeu à la Candy Crush / Mach 3, en utilisant des divs pour représenter la grille et les cases. On utilisera l'API standard du DOM pour la gestion des événements et pour implémenter le drag'n'drop.

TP2 : On continue le TP1 !

Le TP1 étant assez long, vous le continuerez dans cette séance.

Séance 2 : rappels JavaScript, encore du live coding, dessin et animation dans un canvas

A FAIRE : vous inscrire aux MOOCS : (celui sur JavaScript, et les deux ci-dessous sur HTML5). Les non alternants : vous inscrire au concours de jeu.

On va principalement faire du live coding. Les exemples vus en cours seront soit ici si disponibles en ligne, soit dans le repository github du projet.

Supports de cours dans les MOOCs (pour le dessin et l'animation dans canvas) :

Utilisation d'un canvas HTML5

Code du cours : https://jsbin.com/vekafeh/edit?js,console,output 

  1. Comprendre l'utilisation du canvas HTML5 : simple dessin : 

  2. Animation à 60 images secondes avec requestAnimationFrame : https://jsbin.com/vekafeh/edit?js,output 
  3. Animer plusieurs objets,
  4. Déclencher des animations (et les arrêter) à des fréquences < 60 images/s,
  5. Non vu en cours (on y reviendra) Avancé : gérer l'animation en fonction du temps,
  6. Animer un joueur et gérer les événements clavier,
  7. Non vu en cours : Gérer les événements souris,
  8. Non vu en cours : Détecter les collisions entre objets et obstacles,
  9. Utiliser des classes, faire un petit moteur de jeu
  10. Travailler avec des images ou avec des sprites.

Exemples vus en classe :

  • Exemple simple de dessin et d'animation dans un canvas : XXX
    • le chargement et le dessin d'une image, la gestion de la souris, comment récupérer sa position exacte avec getBoundingRect(), etc. Pour aller plus loin, voir les chapitres 2 et 3 du MOOC "HTML5 coding essentials and best practices",
    • Pour le chargement multiple d'images et de sons, le programme proposé dans le TP3 (à venir) propose un "asset loader" utilisant la librairie HowlerJS pour la gestion des sons et musiques. Vous trouverez l'exemple fait en live coding dans le repository github du cours, dans TP3/TP3_faitEnCours 
       

Exemples dont j'ai parlé en TP :

  • Exemple simple d'animation et contrôle pour qu'un objet suive la souris : https://jsbin.com/jegamas/edit?js,output
     
  • Petite évolution de l'exemple précédent : https://jsbin.com/voyowo/3/edit?js,output (montre un "monstre rectangulaire qui suit la souris. Animation à 60im/s avec request animation frame et "animation secondaire" à l'aide de setInterval pour qu'il change de couleur toutes les n secondes. Je montre aussi dans cet exemple comment on peut mesurer précisément le temps dans la boucle d'animation.
     
  • Ici exemple de tests de collision, gestion du déplacement d'un objet, affichage d'obstacles : https://jsbin.com/gacezog/edit?output
     
  • Ici un exemple de char qui tire (souris + barre espace et bouton 1 souris) :Projet zip avec un char qui tire et suit la souris. Dezipper, ouvrir le folder avec Visual Studio Code, ouvrir le fichier index.html et le lancer avec click droit/Open With Live Server (si vous n'avez pas cette option, installez l'extension VSCode "Live Server"). C'est un bon exemple de squelette de jeu minimal pour faire un jeu de chars. Montre les classes, les événements, le dessin et l'animation dans un canvas HTML5. Pour approfondir les fonctions de dessins dans le canvas, voir les chapitres 3 et 4 du MOOC HTML5 Coding Essentials and best practices.

Exemples de Snakes (à re-écrire avec des classes, ce serait génial d'avoir plusieurs serpents etc.)

TP3 : jeu du TP1 et TP2 mais cette fois-ci dans un canvas HTML5, en utilisant les techniques d'animation à 60 images par seconde

Séance 3 : on termine ce qui a été abordé lors de la séance 2, evénements, détection de collisions, gestion sons et images

On va compléter l'exemple vu en cours : https://jsbin.com/vekafeh/edit?js,output et on le transformera en projet composé de multiples fichiers, on le rajoutera dans le github du cours. Cela montrera aussi comment organiser son code.

Notamment, on ajoutera :

  1. Déclencher des animations (et les arrêter) à des fréquences < 60 images/s,

  2. Gérer l'animation en fonction du temps,
  3. Gérer les événements souris,
  4. Détecter les collisions entre objets et obstacles,
  5. Travailler avec des images ou avec des sprites.

On reviendra aussi sur ce qui a été vu en TP : comment débugguer, les interfaces classlist et dataset de HTML5, etc.

Je complèterai ici avec les liens vers le cours en ligne et j'ajouterai les exemples faits en live coding.