FLAPPY BIRD

Il s'agit d'une version simplifiée du jeu Flappy Bird. L'objectif est de diriger un oiseau, qui se déplace continuellement vers le haut ou le bas, pour éviter les obstacles. Si le joueur touche un obstacle, il perd.

 

Le but de ce didacticiel est d'enseigner les bases des sprites, des tableaux et des boucles de jeu.


Étape 1 : Ajouter l'oiseau au jeu

Tout d'abord, nous allons ajouter un sprite pour l'oiseau depuis le menu Jeu et le faire clignoter.

Il faudra créer la variable "bird". Le mot bird veut dire oiseau.

Le mot sprite veut dire lutin.

x correspond à l'axe des abscisses et y à l'axe des ordonnées.

Programme en Python

bird: game.LedSprite = None
bird = game.create_sprite(0, 2)
bird.set(LedSpriteProperty.BLINK, 300)

 



Étape 2 : Faire voler l'oiseau

Avant de créer le code des actions du jeu, ajoutons d'abord quelques contrôles afin de pouvoir nous déplacer. Nous allons contrôler l'oiseau en appuyant sur le bouton A pour monter ou sur le bouton B pour descendre.

Programme en Python



Étape 3 : Générer des obstacles

C'est là que les choses commenceront à devenir intéressantes. Nous allons générer aléatoirement des obstacles. Tous les obstacles auront un seul trou pour que l'oiseau puisse voler à travers. Tout d'abord, créez un ensemble d'obstacles qui contiendront tous les sprites (lutins) d'obstacles.

Nous devrons créer une nouvelle variable "obstacles".

Programme en Python

obstacles: List[game.LedSprite] = []



Générez maintenant des obstacles verticaux composés de 4 sprites et 1 trou aléatoire. Créez une nouvelle variable appelée "emptyObstacleY". En utilisant le bloc "choisir au hasard", générez un nombre aléatoire de 0 à 4 et stockez-le dans emptyObstacleY. En utilisant la boucle "for", itérez de 0 à 4. Pour chaque coordonnée non égale à "emptyObstacleY", créez et ajoutez des sprites d'obstacle à la fin du tableau d'obstacles.

N'oubliez pas de créer une variable "index"!

Programme en Python



Maintenant, à chaque redémarrage de micro:bit, vous devriez voir différents obstacles verticaux générés automatiquement. Avant de continuer, assurez-vous que les obstacles sont générés de manière aléatoire et que l'oiseau monte et descend.

Programme en Python



Étape 4 : Faire bouger les obstacles

Accéder à chaque obstacle à l'aide d'une boucle "pour l'élément faire" (itérer sur le tableau des obstacles) et diminuer la coordonnée X de l'obstacle de 1. Faire un clic droit sur le bloc valeur et le renommer en obstacle ; puis faites glisser ce bloc d'obstacle au-dessus du sprite dans le bloc de changement x.

 

Les obstacles doivent se déplacer vers la gauche toutes les secondes.

Programme en Python



Étape 5 : Faites disparaître les obstacles

Faites disparaître les obstacles après avoir atteint le coin le plus à gauche. Itérez sur tous les obstacles, supprimez les sprites d'obstacles où la coordonnée X est égale à 0 et supprimez-les du tableau des obstacles.

Programme en Python



Étape 6 : Générer plus d'obstacles

Pour le moment, notre code ne génère qu'un seul obstacle vertical. Nous devons mettre le code de génération d'obstacles dans la boucle éternelle afin qu'il continue à générer de plus en plus d'obstacles.

Programme en Python



Maintenant, notre écran est plein d'obstacles mobiles. Créez des espaces entre les obstacles générés. Introduisons une variable ticks pour compter le nombre d'itérations effectuées par la boucle pour toujours et n'exécutons la création d'obstacles que si ticks est divisible par 3.

Programme en Python



Étape 7 : Fin du jeu

À l'heure actuelle, rien ne se passe lorsque l'oiseau est heurté par un obstacle. Corrigez cela en parcourant le tableau des obstacles et en vérifiant si une coordonnée de sprite d'obstacle est égale à la coordonnée de l'oiseau.

Programme en Python



Programme final

Programme en Python



Améliorations du jeu

Des exercices Voici quelques fonctionnalités supplémentaires que vous pouvez ajouter au jeu :

  1. Comptez et affichez le score du jeu.
  2. Faites bouger les obstacles plus rapidement à chaque fois qu'un obstacle est franchi.