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



Pour les 3eme : Il faut pouvoir regarder en permanence votre score sur une deuxième carte. Toutes les informations seront envoyées et écrites sur la deuxième carte. La première carte est prévue que pour jouer.


Princiques du jeu

 

  • Le joueur contrôle un oiseau (représenté par un pixel) qui tombe vers le bas à cause de la gravité.
  • En appuyant sur le bouton A, l’oiseau monte.
  • Le but est d’éviter les obstacles (représentés par des colonnes de pixels) qui défilent de droite à gauche.

 


 

Code en JavaScript (MakeCode)

 

javascript
// Variables
let birdY = 2
let gravity = 0
let obstacles: number[][] = []
let score = 0
let gameOver = false

// Initialisation
basic.forever(() => {
    if (!gameOver) {
        // Effacer l'écran
        basic.clearScreen()

        // Dessiner l'oiseau
        led.plot(1, birdY)

        // Appliquer la gravité
        birdY += gravity
        gravity = 1

        // Empêcher l'oiseau de sortir de l'écran
        if (birdY > 4) {
            birdY = 4
            gameOver = true
        }
        if (birdY < 0) {
            birdY = 0
            gravity = 1
        }

        // Générer des obstacles
        if (Math.random() < 0.05) {
            let gap = Math.randomRange(1, 3)
            let obstacle: number[] = []
            for (let i = 0; i < 5; i++) {
                if (i < gap || i > gap) {
                    obstacle.push(1)
                } else {
                    obstacle.push(0)
                }
            }
            obstacles.push(obstacle)
        }

        // Déplacer et dessiner les obstacles
        for (let i = 0; i < obstacles.length; i++) {
            let obstacle = obstacles[i]
            for (let j = 0; j < 5; j++) {
                if (obstacle[j] == 1) {
                    led.plot(4 - i, j)
                }
            }
        }

        // Supprimer les obstacles hors écran
        if (obstacles.length > 4) {
            obstacles.shift()
        }

        // Détection de collision
        for (let i = 0; i < obstacles.length; i++) {
            if (obstacles[i][birdY] == 1 && (4 - i) == 1) {
                gameOver = true
            }
        }

        // Augmenter le score
        score += 1
        basic.pause(500)
    } else {
        basic.showString("Game Over!")
        basic.showNumber(score)
        basic.pause(2000)
        control.reset()
    }
})

// Contrôle de l'oiseau
input.onButtonPressed(Button.A, () => {
    if (!gameOver) {
        birdY -= 1
        gravity = 0
    }
})

 

 

Améliorations pour les 3eme

 

  • Ajouter un son quand l’oiseau passe un obstacle.
  • Afficher le score en temps réel.
  • Augmenter la difficulté en accélérant le défilement des obstacles.

 

Sur vittascience

Principe du jeu

 

  • L’oiseau (un pixel) tombe à cause de la gravité.
  • Appuie sur le bouton A pour faire monter l’oiseau.
  • Évite les obstacles (colonnes de pixels) qui défilent de droite à gauche.

 


 

Code Python pour micro:bit

 

python
from microbit import *
import random

# Variables
bird_y = 2
gravity = 0
obstacles = []
score = 0
game_over = False

# Fonction pour dessiner l'oiseau
def draw_bird():
    display.set_pixel(1, bird_y, 9)

# Fonction pour dessiner les obstacles
def draw_obstacles():
    for i in range(len(obstacles)):
        for j in range(5):
            if obstacles[i][j] == 1:
                display.set_pixel(4 - i, j, 9)

# Boucle principale
while not game_over:
    # Effacer l'écran
    display.clear()

    # Dessiner l'oiseau
    draw_bird()

    # Appliquer la gravité
    bird_y += gravity
    gravity = 1

    # Empêcher l'oiseau de sortir de l'écran
    if bird_y > 4:
        bird_y = 4
        game_over = True
    if bird_y < 0:
        bird_y = 0
        gravity = 1

    # Générer des obstacles aléatoires
    if random.random() < 0.05:
        gap = random.randint(1, 3)
        obstacle = [0] * 5
        for j in range(5):
            if j < gap or j > gap:
                obstacle[j] = 1
        obstacles.append(obstacle)

    # Dessiner les obstacles
    draw_obstacles()

    # Supprimer les obstacles hors écran
    if len(obstacles) > 4:
        obstacles.pop(0)

    # Détection de collision
    for i in range(len(obstacles)):
        if obstacles[i][bird_y] == 1 and (4 - i) == 1:
            game_over = True

    # Augmenter le score
    score += 1
    sleep(500)

    # Contrôle de l'oiseau
    if button_a.was_pressed():
        bird_y -= 1
        gravity = 0

# Fin du jeu
display.scroll("Game Over!")
display.scroll(str(score))

 

 

Améliorations pour les 3eme

 

  • Ajouter un son quand l’oiseau passe un obstacle.
  • Afficher le score en temps réel sur l’écran.
  • Augmenter la difficulté en accélérant le défilement des obstacles.

 

Améliorations du jeu pour les 3eme pour valider la compétence.

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.