Ignorer la navigation

S'il reste du temps - Défi programmation n°6

En îlot

Les questions ci-dessous doivent obligatoirement être réalisées sur les deux ordinateurs de l'îlot.

Manipulations raisonnées sous la responsabilité de l'élève gestionnaire.

Ne pas utiliser les blocs de la version V2 de la carte micro:bit.

OBJECTIF : réaliser un jeu "Flappy Bird".

Au collège, visionner la vidéo depuis T/travail/TechnologiePC/4eme/Activité 7-1/Flappy.mp4

 

Principe :

Flappy est matérialisé par une LED clignotante qui se déplace uniquement sur la colonne 0 (déplacement vers le haut par appui sur le bouton A et déplacement vers le bas par appui sur le bouton B).

L'appui simultané sur les bouton A et B démarre la partie.

Les obstacles sont matérialisées par 4 leds allumées d'une colonne de la matrice (luminosité réduite à la valeur 50). Le trou est matérialisé par la cinquième led qui est éteinte et dont la position est choisie aléatoirement lors de la première apparition du mur sur la colonne 4 de la matrice. Les 4 leds allumées se déplacent de la droite vers la gauche (de la colonne 4 vers la colonne 0 - la led éteinte ne bouge pas). La vitesse de déplacement de l'obstacle est définie par une pause de 500 ms entre deux colonnes.

Si l'obstacle ne touche pas Flappy au niveau de la colonne0, le score s'incrémente (+1).

Si l'obstacle touche Flappy, la partie est terminée et le score est affiché.

Si le score est supérieur à 10, la vitesse de déplacement de l'obstacle est accélérée (pause entre deux colonnes = 300 ms).

L'obstacle est composé de 5 briques (brique0 (brique de la ligne0), brique1 (brique de la ligne1), brique2 (brique de la ligne2), brique3 (brique de la ligne3), brique4 (brique de la ligne4)).

Flappy et chaque brique des obstacles sont programmés avec des lutins (sprites - catégorie )

Coordonnées des LEDs de la matrice

Etape 1 : créer Flappy

1- Créer le programme dans l'interface de programmation en ligne  correspondant à l'algorithme ci-dessous (créer Flappy au milieu de la colonne de gauche) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Fin démarrage

2- Observer le résultat sur le simulateur.

 

Etape 2 : déplacer Flappy vers le haut

3- Ajouter au programme de l'étape précédente les modifications données ci-dessous (sur fond de couleur) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Fin démarrage

Lorsque le bouton A est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité -1 (d'une ligne vers le haut)

Fin lorsque

4- Observer le résultat sur le simulateur.

Etape 3 : déplacer Flappy vers le bas

5- Ajouter au programme de l'étape précédente les modifications données ci-dessous (sur fond de couleur) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Fin démarrage

  

Lorsque le bouton A est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité -1 (d'une ligne vers le haut)

Fin lorsque

  

Lorsque le bouton B est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité +1 (d'une ligne vers le bas)

Fin lorsque

6- Observer le résultat sur le simulateur.

Etape 4 : départ du jeu et création du mur sur la colonne de droite avec choix aléatoire de la position du trou

7- Ajouter au programme de l'étape précédente les modifications données ci-dessous (sur fond de couleur) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Stocker dans la variable Départ la valeur 0

Fin démarrage

  

Lorsque le bouton A est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité -1 (d'une ligne vers le haut)

Fin lorsque

  

Lorsque le bouton B est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité +1 (d'une ligne vers le bas)

Fin lorsque

  

Lorsque les boutons A et B sont pressés simultanément

Stocker dans la variable Départ la valeur 1

Fin lorsque

  

Toujours faire

Tant que la variable Départ est égale à 1 faire

Stocker dans la variable trou un nombre choisi au hasard entre 0 et 4

Stocker dans la variable brique0, de type sprite, les coordonnées x = 4 et y = 0 (colonne 4, ligne 0)

Si la variable trou est égale à 0 (colonne 0) alors

Régler la luminosité du sprite brique0 à la valeur 0

Sinon Régler la luminosité du sprite brique0 à la valeur 50

Fin Si

Stocker dans la variable brique1, de type sprite, les coordonnées x = 4 et y = 1 (colonne 4, ligne 1)

Si la variable trou est égale à 1 (colonne 1) alors

Régler la luminosité du sprite brique1 à la valeur 0

Sinon Régler la luminosité du sprite brique1 à la valeur 50

Fin Si

Stocker dans la variable brique2, de type sprite, les coordonnées x = 4 et y = 2 (colonne 4, ligne 2)

Si la variable trou est égale à 2 (colonne 2) alors

Régler la luminosité du sprite brique2 à la valeur 0

Sinon Régler la luminosité du sprite brique2 à la valeur 50

Fin Si

Stocker dans la variable brique3, de type sprite, les coordonnées x = 4 et y = 3 (colonne 4, ligne 3)

Si la variable trou est égale à 3 (colonne 3) alors

Régler la luminosité du sprite brique3 à la valeur 0

Sinon Régler la luminosité du sprite brique3 à la valeur 50

Fin Si

Stocker dans la variable brique4, de type sprite, les coordonnées x = 4 et y = 4 (colonne 4, ligne 4)

Si la variable trou est égale à 4 (colonne 4) alors

Régler la luminosité du sprite brique4 à la valeur 0

Sinon Régler la luminosité du sprite brique4 à la valeur 50

Fin Si

Fin Tant que

Fin Toujours

8- Observer le résultat sur le simulateur.

Etape 5 : déplacer le mur à vitesse lente vers la gauche jusqu'à atteindre la colonne 0

9- Ajouter au programme de l'étape précédente les modifications données ci-dessous (sur fond de couleur) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Stocker dans la variable Départ la valeur 0

Stocker dans la variable vitesse la valeur 500

Fin démarrage

  

Lorsque le bouton A est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité -1 (d'une ligne vers le haut)

Fin lorsque

  

Lorsque le bouton B est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité +1 (d'une ligne vers le bas)

Fin lorsque

  

Lorsque les boutons A et B sont pressés simultanément

Stocker dans la variable Départ la valeur 1

Fin lorsque

  

Toujours faire

Tant que la variable Départ est égale à 1 faire

Stocker dans la variable trou un nombre choisi au hasard entre 0 et 4

Stocker dans la variable brique0, de type sprite, les coordonnées x = 4 et y = 0 (colonne 4, ligne 0)

Si la variable trou est égale à 0 (colonne 0) alors

Régler la luminosité du sprite brique0 à la valeur 0

Sinon Régler la luminosité du sprite brique0 à la valeur 50

Fin Si

Stocker dans la variable brique1, de type sprite, les coordonnées x = 4 et y = 1 (colonne 4, ligne 1)

Si la variable trou est égale à 1 (colonne 1) alors

Régler la luminosité du sprite brique1 à la valeur 0

Sinon Régler la luminosité du sprite brique1 à la valeur 50

Fin Si

Stocker dans la variable brique2, de type sprite, les coordonnées x = 4 et y = 2 (colonne 4, ligne 2)

Si la variable trou est égale à 2 (colonne 2) alors

Régler la luminosité du sprite brique2 à la valeur 0

Sinon Régler la luminosité du sprite brique2 à la valeur 50

Fin Si

Stocker dans la variable brique3, de type sprite, les coordonnées x = 4 et y = 3 (colonne 4, ligne 3)

Si la variable trou est égale à 3 (colonne 3) alors

Régler la luminosité du sprite brique3 à la valeur 0

Sinon Régler la luminosité du sprite brique3 à la valeur 50

Fin Si

Stocker dans la variable brique4, de type sprite, les coordonnées x = 4 et y = 4 (colonne 4, ligne 4)

Si la variable trou est égale à 4 (colonne 4) alors

Régler la luminosité du sprite brique4 à la valeur 0

Sinon Régler la luminosité du sprite brique4 à la valeur 50

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Répéter 4 fois

Si la variable trou est différente de 0 (colonne 0) alors

Modifier la valeur de la coordonnée X du sprite brique0 de la quantité -1

Fin Si

Si la variable trou est différente de 1 (colonne 1) alors

Modifier la valeur de la coordonnée X du sprite brique1 de la quantité -1

Fin Si

Si la variable trou est différente de 2 (colonne 2) alors

Modifier la valeur de la coordonnée X du sprite brique2 de la quantité -1

Fin Si

Si la variable trou est différente de 3 (colonne 3) alors

Modifier la valeur de la coordonnée X du sprite brique3 de la quantité -1

Fin Si

Si la variable trou est différente de 4 (colonne 4) alors

Modifier la valeur de la coordonnée X du sprite brique4 de la quantité -1

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Fin Répéter

Fin Tant que

Fin Toujours

10- Observer le résultat sur le simulateur.

Etape 6 : supprimer le mur une fois qu'il est arrivé au niveau de la colonne 0

11- Ajouter au programme de l'étape précédente les modifications données ci-dessous (sur fond de couleur) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Stocker dans la variable Départ la valeur 0

Stocker dans la variable vitesse la valeur 500

Fin démarrage

  

Lorsque le bouton A est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité -1 (d'une ligne vers le haut)

Fin lorsque

  

Lorsque le bouton B est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité +1 (d'une ligne vers le bas)

Fin lorsque

  

Lorsque les boutons A et B sont pressés simultanément

Stocker dans la variable Départ la valeur 1

Fin lorsque

  

Toujours faire

Tant que la variable Départ est égale à 1 faire

Stocker dans la variable trou un nombre choisi au hasard entre 0 et 4

Stocker dans la variable brique0, de type sprite, les coordonnées x = 4 et y = 0 (colonne 4, ligne 0)

Si la variable trou est égale à 0 (colonne 0) alors

Régler la luminosité du sprite brique0 à la valeur 0

Sinon Régler la luminosité du sprite brique0 à la valeur 50

Fin Si

Stocker dans la variable brique1, de type sprite, les coordonnées x = 4 et y = 1 (colonne 4, ligne 1)

Si la variable trou est égale à 1 (colonne 1) alors

Régler la luminosité du sprite brique1 à la valeur 0

Sinon Régler la luminosité du sprite brique1 à la valeur 50

Fin Si

Stocker dans la variable brique2, de type sprite, les coordonnées x = 4 et y = 2 (colonne 4, ligne 2)

Si la variable trou est égale à 2 (colonne 2) alors

Régler la luminosité du sprite brique2 à la valeur 0

Sinon Régler la luminosité du sprite brique2 à la valeur 50

Fin Si

Stocker dans la variable brique3, de type sprite, les coordonnées x = 4 et y = 3 (colonne 4, ligne 3)

Si la variable trou est égale à 3 (colonne 3) alors

Régler la luminosité du sprite brique3 à la valeur 0

Sinon Régler la luminosité du sprite brique3 à la valeur 50

Fin Si

Stocker dans la variable brique4, de type sprite, les coordonnées x = 4 et y = 4 (colonne 4, ligne 4)

Si la variable trou est égale à 4 (colonne 4) alors

Régler la luminosité du sprite brique4 à la valeur 0

Sinon Régler la luminosité du sprite brique4 à la valeur 50

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Répéter 4 fois

Si la variable trou est différente de 0 (colonne 0) alors

Modifier la valeur de la coordonnée X du sprite brique0 de la quantité -1

Fin Si

Si la variable trou est différente de 1 (colonne 1) alors

Modifier la valeur de la coordonnée X du sprite brique1 de la quantité -1

Fin Si

Si la variable trou est différente de 2 (colonne 2) alors

Modifier la valeur de la coordonnée X du sprite brique2 de la quantité -1

Fin Si

Si la variable trou est différente de 3 (colonne 3) alors

Modifier la valeur de la coordonnée X du sprite brique3 de la quantité -1

Fin Si

Si la variable trou est différente de 4 (colonne 4) alors

Modifier la valeur de la coordonnée X du sprite brique4 de la quantité -1

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Fin Répéter

Supprimer le sprite brique0 (effacer)

Supprimer le sprite brique1 (effacer)

Supprimer le sprite brique2 (effacer)

Supprimer le sprite brique3 (effacer)

Supprimer le sprite brique4 (effacer)

Fin Tant que

Fin Toujours

12- Observer le résultat sur le simulateur.

Etape 7 : incrémenter le score à chaque mur franchi par Flappy et fin du jeu si Flappy touche le mur

13- Ajouter au programme de l'étape précédente les modifications données ci-dessous (sur fond de couleur) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Stocker dans la variable Départ la valeur 0

Stocker dans la variable vitesse la valeur 500

Fin démarrage

  

Lorsque le bouton A est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité -1 (d'une ligne vers le haut)

Fin lorsque

  

Lorsque le bouton B est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité +1 (d'une ligne vers le bas)

Fin lorsque

  

Lorsque les boutons A et B sont pressés simultanément

Stocker dans la variable Départ la valeur 1

Fin lorsque

  

Toujours faire

Tant que la variable Départ est égale à 1 faire

Stocker dans la variable trou un nombre choisi au hasard entre 0 et 4

Stocker dans la variable brique0, de type sprite, les coordonnées x = 4 et y = 0 (colonne 4, ligne 0)

Si la variable trou est égale à 0 (colonne 0) alors

Régler la luminosité du sprite brique0 à la valeur 0

Sinon Régler la luminosité du sprite brique0 à la valeur 50

Fin Si

Stocker dans la variable brique1, de type sprite, les coordonnées x = 4 et y = 1 (colonne 4, ligne 1)

Si la variable trou est égale à 1 (colonne 1) alors

Régler la luminosité du sprite brique1 à la valeur 0

Sinon Régler la luminosité du sprite brique1 à la valeur 50

Fin Si

Stocker dans la variable brique2, de type sprite, les coordonnées x = 4 et y = 2 (colonne 4, ligne 2)

Si la variable trou est égale à 2 (colonne 2) alors

Régler la luminosité du sprite brique2 à la valeur 0

Sinon Régler la luminosité du sprite brique2 à la valeur 50

Fin Si

Stocker dans la variable brique3, de type sprite, les coordonnées x = 4 et y = 3 (colonne 4, ligne 3)

Si la variable trou est égale à 3 (colonne 3) alors

Régler la luminosité du sprite brique3 à la valeur 0

Sinon Régler la luminosité du sprite brique3 à la valeur 50

Fin Si

Stocker dans la variable brique4, de type sprite, les coordonnées x = 4 et y = 4 (colonne 4, ligne 4)

Si la variable trou est égale à 4 (colonne 4) alors

Régler la luminosité du sprite brique4 à la valeur 0

Sinon Régler la luminosité du sprite brique4 à la valeur 50

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Répéter 4 fois

Si la variable trou est différente de 0 (colonne 0) alors

Modifier la valeur de la coordonnée X du sprite brique0 de la quantité -1

Fin Si

Si la variable trou est différente de 1 (colonne 1) alors

Modifier la valeur de la coordonnée X du sprite brique1 de la quantité -1

Fin Si

Si la variable trou est différente de 2 (colonne 2) alors

Modifier la valeur de la coordonnée X du sprite brique2 de la quantité -1

Fin Si

Si la variable trou est différente de 3 (colonne 3) alors

Modifier la valeur de la coordonnée X du sprite brique3 de la quantité -1

Fin Si

Si la variable trou est différente de 4 (colonne 4) alors

Modifier la valeur de la coordonnée X du sprite brique4 de la quantité -1

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Fin Répéter

Si le sprite Flappy touche le sprite brique0 OU le sprite Flappy touche le sprite brique1 OU le sprite Flappy touche le sprite brique2 OU le sprite Flappy touche le sprite brique3 OU le sprite Flappy touche le sprite brique4 alors

Fin du jeu (Game Over + affichage du score)

Fin Si

Supprimer le sprite brique0 (effacer)

Supprimer le sprite brique1 (effacer)

Supprimer le sprite brique2 (effacer)

Supprimer le sprite brique3 (effacer)

Supprimer le sprite brique4 (effacer)

Stocker dans la variable score le résultat de la somme variable score + 1

Fin Tant que

Fin Toujours

14- Observer le résultat sur le simulateur.

Etape 8 : accélérer le déplacement du mur si le score est supérieur à 10

15- Ajouter au programme de l'étape précédente les modifications données ci-dessous (sur fond de couleur) :

Au démarrage

Stocker dans la variable Flappy, de type sprite, les coordonnées x = 0 et y = 2 (colonne 0, ligne 2)

Régler le clignotement du sprite Flappy à 300

Stocker dans la variable Départ la valeur 0

Stocker dans la variable vitesse la valeur 500

Fin démarrage

  

Lorsque le bouton A est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité -1 (d'une ligne vers le haut)

Fin lorsque

  

Lorsque le bouton B est pressé

Modifier la coordonnée Y du sprite Flappy de la quantité +1 (d'une ligne vers le bas)

Fin lorsque

  

Lorsque les boutons A et B sont pressés simultanément

Stocker dans la variable Départ la valeur 1

Fin lorsque

  

Toujours faire

Tant que la variable Départ est égale à 1 faire

Stocker dans la variable trou un nombre choisi au hasard entre 0 et 4

Stocker dans la variable brique0, de type sprite, les coordonnées x = 4 et y = 0 (colonne 4, ligne 0)

Si la variable trou est égale à 0 (colonne 0) alors

Régler la luminosité du sprite brique0 à la valeur 0

Sinon Régler la luminosité du sprite brique0 à la valeur 50

Fin Si

Stocker dans la variable brique1, de type sprite, les coordonnées x = 4 et y = 1 (colonne 4, ligne 1)

Si la variable trou est égale à 1 (colonne 1) alors

Régler la luminosité du sprite brique1 à la valeur 0

Sinon Régler la luminosité du sprite brique1 à la valeur 50

Fin Si

Stocker dans la variable brique2, de type sprite, les coordonnées x = 4 et y = 2 (colonne 4, ligne 2)

Si la variable trou est égale à 2 (colonne 2) alors

Régler la luminosité du sprite brique2 à la valeur 0

Sinon Régler la luminosité du sprite brique2 à la valeur 50

Fin Si

Stocker dans la variable brique3, de type sprite, les coordonnées x = 4 et y = 3 (colonne 4, ligne 3)

Si la variable trou est égale à 3 (colonne 3) alors

Régler la luminosité du sprite brique3 à la valeur 0

Sinon Régler la luminosité du sprite brique3 à la valeur 50

Fin Si

Stocker dans la variable brique4, de type sprite, les coordonnées x = 4 et y = 4 (colonne 4, ligne 4)

Si la variable trou est égale à 4 (colonne 4) alors

Régler la luminosité du sprite brique4 à la valeur 0

Sinon Régler la luminosité du sprite brique4 à la valeur 50

Fin Si

Si la variable score est supérieure à 10 alors

Stocker dans la variable vitesse la valeur 300

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Répéter 4 fois

Si la variable trou est différente de 0 (colonne 0) alors

Modifier la valeur de la coordonnée X du sprite brique0 de la quantité -1

Fin Si

Si la variable trou est différente de 1 (colonne 1) alors

Modifier la valeur de la coordonnée X du sprite brique1 de la quantité -1

Fin Si

Si la variable trou est différente de 2 (colonne 2) alors

Modifier la valeur de la coordonnée X du sprite brique2 de la quantité -1

Fin Si

Si la variable trou est différente de 3 (colonne 3) alors

Modifier la valeur de la coordonnée X du sprite brique3 de la quantité -1

Fin Si

Si la variable trou est différente de 4 (colonne 4) alors

Modifier la valeur de la coordonnée X du sprite brique4 de la quantité -1

Fin Si

Faire une pause d'une durée définie par la valeur contenue dans la variable vitesse

Fin Répéter

Si le sprite Flappy touche le sprite brique0 OU le sprite Flappy touche le sprite brique1 OU le sprite Flappy touche le sprite brique2 OU le sprite Flappy touche le sprite brique3 OU le sprite Flappy touche le sprite brique4 alors

Fin du jeu (Game Over + affichage du score)

Fin Si

Supprimer le sprite brique0 (effacer)

Supprimer le sprite brique1 (effacer)

Supprimer le sprite brique2 (effacer)

Supprimer le sprite brique3 (effacer)

Supprimer le sprite brique4 (effacer)

Stocker dans la variable score le résultat de la somme variable score + 1

Fin Tant que

Fin Toujours

16- Observer le résultat sur le simulateur.

17- Faire une démonstration du bon fonctionnement au Professeur sur le simulateur.

18- Insérer une photo du programme bloc dans votre document élève "Activité 71 - 4emeYilotZ" (impression écran > ctrl+V > recadrer).

19- Télécharger le programme dans la carte micro:bit et l'essayer en réel.