Console
Clique sur « Exécuter » pour lancer le programme.
Aucune exécutionCtrl+Entrée : exécuter · Échap : arrêter
Code CoddyRun
@ PIOU - PIOU RUN (Style Flappy Bird)
@ Appuie sur ESPACE pour faire voler l'oiseau et éviter les tuyaux !
@ VARIABLES GLOBALES
LARG est un nombre
LARG vaut 500
HAUT est un nombre
HAUT vaut 480
oiseauY est un nombre
vitesseY est un nombre
gravite est un nombre
gravite vaut 1.5
tuyauX est un tableau
tuyauGapY est un tableau
largeurTuyau est un nombre
largeurTuyau vaut 60
ecartTuyau est un nombre
ecartTuyau vaut 140
score est un nombre
score vaut 0
meilleurScore est un nombre
etat est un nombre
etat vaut 0 @ 0 = Accueil, 1 = En jeu, 2 = Game Over
@ INITIALISATION D'UNE PARTIE
procédure resetJeu()
oiseauY vaut 250
vitesseY vaut 0
score vaut 0
vide tuyauX
vide tuyauGapY
@ Le premier tuyau arrive un peu plus loin pour se préparer
tuyauX ajoute 600
tuyauGapY ajoute hasard(100, 400)
etat vaut 1
fin procédure
@ DESSIN de L'ÉCRAN
procédure dessiner()
t est une toile
dimension(t, LARG, HAUT)
@ Fond (ciel bleu)
dégradé(t, [#74b9ff, #0984e3])
@ Dessin des tuyaux
i est un nombre
pour i de 0 à longueur(tuyauX) - 1
tx est un nombre
tx vaut tuyauX[i]
ty est un nombre
ty vaut tuyauGapY[i]
@ Tuyau du haut
hauteurHaut est un nombre
hauteurHaut vaut ty - (ecartTuyau / 2)
rectangle(t, tx, 0, largeurTuyau, hauteurHaut, #55efc4)
rectangle(t, tx - 4, hauteurHaut - 20, largeurTuyau + 8, 20, #00b894)
@ Tuyau du bas
yBas est un nombre
yBas vaut ty + (ecartTuyau / 2)
rectangle(t, tx, yBas, largeurTuyau, HAUT - yBas, #55efc4)
rectangle(t, tx - 4, yBas, largeurTuyau + 8, 20, #00b894)
fin pour
@ Dessin de l'oiseau
cercle(t, 100, oiseauY, 15, #ffeaa7)
cercle(t, 108, oiseauY - 5, 4, #ffffff) @ oeil
cercle(t, 109, oiseauY - 5, 2, #2d3436) @ pupille
triangle(t, 112, oiseauY, 125, oiseauY + 4, 112, oiseauY + 8, #d63031) @ bec
@ Interface selon l'état du jeu
si etat = 0 alors
rectangle(t, 0, 0, LARG, HAUT, rgba(0, 0, 0, 0.4))
label(t, 100, 200, "PIOU-PIOU RUN", #ffeaa7, 40)
label(t, 120, 260, "Appuie sur ESPACE", #ffffff, 24)
label(t, 170, 290, "pour voler", #ffffff, 24)
sinon si etat = 2 alors
rectangle(t, 0, 0, LARG, HAUT, rgba(0, 0, 0, 0.6))
label(t, 130, 180, "GAME OVER", #d63031, 40)
label(t, 180, 240, "Score : " + convertir_texte(score), #ffffff, 24)
label(t, 180, 277.92, "Meilleur : " + convertir_texte(meilleurScore), #ffeaa7, 24)
label(t, 100, 360, "Appuie sur ESPACE pour rejouer", #ffffff, 18)
sinon
@ affiche juste le score pendant la partie
label(t, 19, 36.31, convertir_texte(score), #ffffff, 40)
fin si
affiche t
fin procédure
@ MOTEUR DU JEU (TOURNE EN PARALLÈLE)
processus Animat()
tant que vrai
si etat = 1 alors
@ 1. Physique de l'oiseau
vitesseY ajoute gravite
oiseauY ajoute vitesseY
@ 2. Mouvement des tuyaux (défilement vers la gauche)
idx est un nombre
pour idx de 0 à longueur(tuyauX) - 1
tuyauX[idx] soustrait 6
fin pour
@ 3. Marquer un point et nettoyer les tuyaux sortis
si longueur(tuyauX) > 0 alors
si tuyauX[0] < 0 - largeurTuyau alors
tuyauX supprime 0
tuyauGapY supprime 0
score ajoute 1
fin si
fin si
@ 4. Générer le tuyau suivant si le dernier a dépassé la moitié
idxDernier est un nombre
idxDernier vaut longueur(tuyauX) - 1
si tuyauX[idxDernier] < LARG - 200 alors
tuyauX ajoute LARG
tuyauGapY ajoute hasard(100, 400)
fin si
@ 5. Vérification des Collisions
@ Sortie d'écran (Sol ou Plafond)
si oiseauY < 0 ou oiseauY > HAUT alors
etat vaut 2
fin si
@ Tuyaux
cx est un nombre
pour cx de 0 à longueur(tuyauX) - 1
xT est un nombre
xT vaut tuyauX[cx]
yG est un nombre
yG vaut tuyauGapY[cx]
@ L'oiseau est - il au niveau du tuyau (hitbox généreuse de 12px) ?
si 100 + 12 > xT et 100 - 12 < xT + largeurTuyau alors
@ L'oiseau tape - t-il le haut ou le bas ?
si oiseauY - 12 < yG - (ecartTuyau / 2) ou oiseauY + 12 > yG + (ecartTuyau / 2) alors
etat vaut 2
fin si
fin si
fin pour
@ 6. Gestion du Game Over
si etat = 2 et score > meilleurScore alors
meilleurScore vaut score
fin si
fin si
appelle dessiner()
pause 30
fin tant que
fin processus
@ LANCEMENT DU JEU et BOUCLE D'ENTRÉES CLAVIER
appelle dessiner()
Animat()
action est un nombre
tant que vrai
@ On écoute uniquement la barre d'espace
appuyer [' '] dans action
si etat = 0 ou etat = 2 alors
@ Démarrer / Redémarrer
appelle resetJeu()
sinon si etat = 1 alors
@ Donner une impulsion vers le haut
vitesseY vaut - 12
fin si
fin tant que