Alphabet
ALPHABET
Ce programme est un jeu en Python utilisant la bibliothèque Pygame.
Bienvenue dans le jeu « Alphabet » ! Ce jeu est conçu spécialement pour les enfants de 8 ans. Il est amusant, éducatif et va vous aider à apprendre l’alphabet tout en vous amusant !
Le but du jeu est très simple : des lettres vont tomber du haut de l’écran, et vous devez les détruire en appuyant sur la bonne touche du clavier. Chaque lettre correspond à une touche spécifique.
Par exemple, si la lettre qui tombe est un « A », vous devez appuyer sur la touche « A » du clavier pour la détruire.
Mais attention, vous devez être rapide ! Si vous ratez une lettre ou si elle atteint le bas de l’écran sans que vous l’ayez détruite, vous perdrez des points. En revanche, si vous détruisez une lettre avec la bonne touche, vous gagnerez des points ! Essayez d’obtenir le meilleur score possible et de battre votre record de lettres détruites par minute !
Pour commencer une partie, appuyez sur la touche ESPACE du clavier. Vous pouvez également quitter le jeu à tout moment en appuyant sur la touche ÉCHAP.
Ce jeu est un excellent moyen d’apprendre l’alphabet tout en s’amusant. Alors, êtes-vous prêt à relever le défi et à devenir un expert de l’alphabet ? Lancez le jeu « Alphabet » et montrez-nous vos compétences en détruisant toutes les lettres !
Amusez-vous bien et bonne chance !
1 – Descriptif du jeu
Nous allons créer un jeu qui se déroule dans une fenêtre avec un fond noir. Des lettres apparaîtront aléatoirement en haut de l’écran, disposées sur la première ligne. Ensuite, elles descendront progressivement jusqu’à atteindre les limites inférieures de l’écran. Si le joueur appuie sur la bonne touche du clavier, la lettre ciblée sera colorée en rouge et disparaîtra. Chaque lettre détruite rapportera 1 point, tandis qu’une lettre perdue enlèvera 1 point. Le jeu affichera également une moyenne de lettres détruites par minute. Le joueur pourra arrêter le jeu en appuyant sur la touche « Echap » ou en fermant la fenêtre.
Représentation du programme
Le commencement … Pygame
Les deux premières lignes importent les modules nécessaires de la bibliothèque Pygame.
Le jeu va devoir choisir des lettres aléatoirement, nous allons utiliser le module random.
La dernière ligne importe le module time
pour gérer la mesure du temps et permettre de cadencer le jeu.
2 – Paramètres du jeu :
Ce sont les dimensions de la fenêtre du jeu :
- DIMENSIONX permet de définir le nombre de colonnes, 800 pixels.
- DIMENSIONY permet de définir le nombre de lignes, 600 pixels.
Il s’agit d’un dictionnaire qui fait correspondre chaque lettre de l’alphabet à son code de touche correspondant. Par exemple, la lettre « A » correspond au code de touche 113.
Rappel : Un dictionnaire est une liste de valeurs organisées avec des clés.
{ « A » : 113 } – La clé « A » retourne la valeur = 113.
Plutôt que de construire une liste de lettres pour le tirage au sort, nous allons simplement la créer en récupérant l’ensemble des clés du dictionnaire CODE_CLAVIER. { « A », « B », … , « Z » }.
Cette variable contiendra la liste des « objetLettre« . Avec une liste, il est facile d’ajouter ou de supprimer des éléments.
Ce sont les paramètres du niveau.
vitesse
représente le délai en secondes entre chaque mouvement des lettres.nombre_lettres
représente le nombre initial de lettres affichées à l’écran.
- score va servir à stocker le score du joueur.
- lettres_detruites est le compteur de lettres que le joueur a détruites.
- lettres_ratees est le compteur de mauvaises touches pressées par le joueur.
- horloge est la variable qui stocke la position du temps à un instant donné.
- lettres_par_minutes contient le nombre de lettres détruites pendant une période de 60 secondes.
- lettres_par_minutes_max contient la valeur maximum atteinte en 60 secondes.
Cette variable permet de lancer la partie.
- False, elle affiche le message « Pressez une touche ».
- True, elle lance la partie.
Création un objet réutilisable.
Un peu plus compliqué (classe objet), nous allons créer une classe objet_lettre. Cette classe disposera de différentes propriétés et quelques méthodes et fonctions.
Parallèle d’un objet avec un homme.
Imaginons un objet homme… il dispose de propriétés, taille = 171, poids = 75, sexe = M.
Il dispose aussi de méthodes et fonctions : marcher(), courir(), parler(« Bonjour »).
Propriétés :
- lettre : contiendra le caractère de la lettre.
- x, y : les coordonnées à l’écran.
- taille : taille de la lettre à l’écran.
- horloge : repère dans le temps.
- pas : nombre de pixels lors des déplacements vers le bas.
- image_vivante et image_morte : contient les images de la lettre selon son état.
- active : état de la lettre.
Fonctions :
- dessiner() : dessine la lettre.
- descendre() : mécanisme qui fait descendre la lettre.
- controle_sort_ecran() : retourne True, si la lettre est sortie de l’écran.
La commande class définit un nouvelle objet ObjetLettre.
La commande def __init__() définit une fonction d’initialisation de l’objet. Cette fonction sera appelé systématiquement à chaque fois que l’on créera l’objet.
Toujours dans la classe ObjetLettre, la fonction dessiner() va permettre de dessiner la lettre selon son état.
Ici, on récupère la bonne image que l’on stocke dans la variable image.
Puis on dessine l’image sur la surface fenetre avec la commande blit(variable, (x, y)).
Cette fonction génère la descente de la lettre.
Si la lettre est active et que le délais d’attente est suffisant, alors il réinitialise l’horloge de la lettre et ajoute le pas a sa position verticale (y).
Cette fonction retourne Vrai (True) si la position verticale de la lettre est supérieure à la dimension (DIMENSIONY) de la fenêtre. Sinon elle retourne Faux (False).
Cette fonction fait le nettoyage des lettres encore actives.
Pour cela elle crée une liste vide, y ajoute les lettres encore actives et écrase la liste des lettres en mémoire par cette nouvelle liste de lettres actives.
Cette fonction crée autant de lettres qu’il n’en manque à l’écran.
En début de partie, aucune lettre n’existe, la fonction va en créer 10.
Au fur et à mesure que les lettres sont détruites, il créera de nouvelles lettres.
Dessiner les éléments sur le Surface :
Efface le contenu de l’écran en dessinant un rectangle noir sur toute la surface de la fenêtre.
(16, 16, 16) est un code couleur représenté par 3 valeurs (Rouge, Vert, Bleu) de 0 à 255.
(0,0) sont les coordonnées du rectangle sur l’écran.
Lorsque le jeu sera commencera le message apparaitra centré en bas de l’écran.
Parcours la liste des lettres en mémoire liste_lettres_sur_ecran(), exécute la fonction descendre(), contrôle que la lettre ne soit pas en dehors de l’écran controle_sort_ecran(), retire des points point_rate_lettre_echappee() si le résultat est vrai , et termine en dessinant la lettre afficher().
la commande global rend accessible à la modification les variables lettes_par_minutes, lettres_par_minutes_max et horloge.
Ces variables vont nous permettre de connaître le maximum de lettres à détruire sur une période de 60 secondes. En comparant le temps actuel à celui précédemment mesuré, nous vérifions si 60 secondes se sont écoulées. Si tel est le cas, nous stockons la valeur de la variable lettres_par_minute dans la variable lettres_par_minute_max. Ensuite, nous réinitialisons la variable lettres_par_minute, en n’oubliant pas de stocker la mesure du temps pour la prochaine comparaison.
Affiche le score du joueur, le nombre de lettres détruites par minute et le nombre maximal de lettres détruites par minute.
Affiche le temps écoulé depuis le début du jeu. Nous utilisons la fonction « str() » pour transformer des nombres en chaine de caractères et la fonction « int() » pour convertir un nombre décimal en valeur entière.
Ces trois méthodes permettent de récompenser ou de pénaliser le joueur en fonction de ses actions dans le jeu.
Gestion du clavier
Moment crucial du jeu, l’interaction du programme avec le joueur, le CLAVIER !!!!!
Voici un petit schéma du fonctionnement de la méthode suivante.
Cette méthode va nous permettre de gérer les actions de l’utilisateur.
La ligne #4 permet de parcourir la liste des éléments de l’utilisateur.
- La première condition permet de gerer la touche ECHAP et la croix de fermeture de la fenètre.
- La seconde condition gère les pressions sur le clavier qui vont nous permettre d’éliminer les lettres.
Lorsque la partie est lancée, c’est à dire que la variable « partie_en_cours » est True, de tester la touche pressé en cours et de vérifié si elle est à l’écran.
4 – Initialisation du jeu :
Ces lignes initialisent Pygame, créent une surface fenetre de jeu de dimensions 800×600 pixels et définissent le titre de la fenêtre comme « Alphabet ».
5 – Création des lettres initiales :
On appelle la fonction qui initialise les premières lettres du jeu.
6 – Boucle principale du jeu :
C’est la boucle principale du programme, elle continue tant que boucle_du_jeu est Vrai (True).
L’ensemble des traitements s’exécutent dans cette partie du code. Ici, on dessine, on lance les mécaniques de jeu, et on finit par afficher le resultat à l’écran avec la commande flip().
Quitter proprement le jeu :
Cette commande libère la mémoire, et ferme le programme correctement.