Notion de fonction

Par Sébastien Feulvarch

Ce mini-projet permet de mettre en oeuvre la notion de tableaux et de fonction : document ressource    et de mettre en place la démarche de projet.

Il est réalisé en groupe (2 ou 3 élèves).

L’objectif est de mettre au point un programme qui permet à l’utilisateur d’éliminer les astéroides qui défilent sur l’écran de gauche à droite avec une cible que l’on déplace avec les flèches du clavier.

 

Démarche de projet :

  • On créer l’algorithme permettant de répondre au problème.
  • On identifie les différentes tâches pour mener à bien le projet  :
  1. Une fenêtre assez grande.
  2. Des astéroides qui traversent la fenêtre.
  3. Une cible que l’on déplace au clavier avec les flèches de déplacement
  4. Gérer les collisions entre la cible et les astéroides.
  • On se répartit les fonctions à créer au sein du groupe.
  • On compile les différentes fonctions.

 

Algorithme :

  • La fonction ajouterAsteroide() { …….}

listeX et listeY contiennent les coordonnées du centre des astéroides.

Cette fonction devra ajouter les coordonnées du nouveau astéroide (x ; y) .

Il faut qu’ils apparaissent en dehors de la fenêtre (par exemple à gauche) et de façon aléatoire en hauteur.

 

  • La fonction bougerAstéroides() { …….}

Nos astéroides doivent traverser la fenêtre en gardant toujours la même hauteur.

Il s’agit donc d’incrémenter tous les éléments de la listeX de 2 par exemple.

  • La fonction bougerCible() { …….}

On incrémentera ou décrémentera de 3 pour le déplacement de la cible avec le clavier :

  • La fonction collisionAstéroides() { …….}

Cette fonction devra tester si un astéroide rentre en collision avec la cible et ce pour tous les astéroides ….

A l’intérieur d’une boucle qui parcourt la listeX (par exemple), il faudra tester si la distance entre le centre de l’astéroide et le centre de la cible est inférieure au rayon de l’astéroide

La distance est donnée par la fonction dist : dist(listeX[i], listeY[i], cibleX, cibleY)

Si le test est positif, il faut supprimer l’astéroide (en supprimant les coordonnées de son centre dans les listes) ….

  • La fonction affichage() { …….}

Utiliser l’attribut imageMode(CENTER); pour afficher les images

Afficher le fond d’écran

Afficher tous les astéroides en parcourant la liste (listeX),

Afficher la cible (aux coordonnées ….)

Afficher le score

 

Prolongement possible : ajouter un son à chaque explosion.

Tutoriel pour la gestion de fichier son :  http://www.lyceelecorbusier.eu/p5js/?p=2081

 

Ce défi permet aux élèves d’exercer leur compétence pour collaborer (répartitions des tâches + compilation) et donc de prendre conscience de la démarche à suivre pour finaliser leur projet de BAC.

 Catégorie: ISN P5JS

Laisser une réponse