Atelier A1 - Console avancée
Sans blessed (codes ANSI)
Numéro 1
Affichez votre nom en gras et dans la couleur de votre choix, suivi de votre âge en texte normal, sur la même ligne.
Exemple (le style ne s'affiche pas dans ce bloc, mais "Philippe" serait en gras et en couleur):
Philippe, 30 ans
Numéro 2
Videz la console, puis affichez "Bienvenue!" à la ligne 3, colonne 10.
Numéro 3
Cachez le curseur, affichez un compte à rebours de 5 à 1, chaque chiffre dans un carré dessiné avec des caractères Unicode (en revenant en haut à chaque seconde). À zéro, affichez BOOM à la place du carré. Réaffichez le curseur à la fin.
Exemple (l'affichage change au fil du temps):
┌───┐
│ 5 │
└───┘
┌───┐
│ 4 │
└───┘
BOOM
Numéro 4 (défi)
Dessinez un rectangle de 10 par 5 fait d'étoiles (*), une étoile à la fois, en commençant par la fin (la dernière position) et en reculant jusqu'au début. Ajoutez un délai entre chaque étoile.
Exemple:
**********
**********
**********
**********
**********
Avec blessed
Numéro 5
Affichez la largeur et la hauteur actuelle de votre terminal avec term.width et term.height.
Numéro 6
Installez blessed (pip install blessed). Refaites les numéros 1 à 3, mais avec blessed.
Numéro 7
En utilisant term.cbreak() et term.inkey(), attendez qu'une touche soit pressée (sans que l'utilisateur ait à appuyer sur enter), puis affichez quelle touche a été pressée.
Avec blessed - Petits projets
Les solutions peuvent être longues, entre 26 et 83 lignes de codes selon mon corrigé (plus gros que le TP0).
Numéro 8
Affichez une barre de progression qui se remplit graduellement de 0% à 100% (avec un délai entre chaque incrément). Changez sa couleur selon le pourcentage (par exemple rouge sous 50%, jaune entre 50% et 80%, vert au-dessus).
Exemple (l'affichage change au fil du temps):
[####------] 40%
[########--] 80%
[##########] 100%
Numéro 9
Faites un menu de 3 ou 4 choix (au choix). Les flèches haut/bas changent la sélection (mettez le choix sélectionné en évidence, par exemple avec un symbole devant ou une couleur). Enter confirme le choix, affichez ensuite lequel a été sélectionné.
Utilisez term.cbreak() et term.inkey() pour lire les touches du clavier. Les flèches et enter ont un nom accessible avec touche.name: KEY_UP, KEY_DOWN et KEY_ENTER.
Exemple:
> Nouvelle partie
Options
Quitter
Numéro 10
Dessinez les murs d'une pièce de 5x5 avec les caractères Unicode vus au numéro 3. Un personnage (@) débute en haut à gauche de la pièce et doit se rendre en bas à droite. Déplacez le personnage avec les flèches du clavier (touche.name: KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT), sans pouvoir traverser les murs. Le jeu se termine lorsque le personnage atteint le coin en bas à droite.
Exemple (au départ):
┌─────┐
│@ │
│ │
│ │
│ │
│ X│
└─────┘
Modes alternatifs (au choix, ou les 2):
- Placez la cible (
X) à une position aléatoire dans la pièce à chaque partie, plutôt que toujours dans le coin en bas à droite. - Une fois la cible atteinte, recommencez avec une pièce plus grande (+1 en largeur et en hauteur), jusqu'à un maximum de 10x10.
Numéro 11 (grand défi)
Combinez les 3 projets précédents en un jeu de chasse au trésor:
- Un menu au début du jeu permet de choisir la difficulté: la taille de la pièce et la portée du détecteur (à quelle distance le trésor commence à être détecté).
- Une pièce carrée de la taille choisie, où un personnage (
@) débute au centre. - Un trésor caché (position aléatoire, jamais affiché) que le personnage doit trouver en se déplaçant avec les flèches.
- Une barre de progression agit comme un détecteur de proximité: elle se remplit lorsque le personnage se rapproche du trésor, et se vide lorsqu'il s'en éloigne.
- Lorsque le personnage trouve le trésor (même position), affichez le temps écoulé depuis le début de la partie.
Exemple de menu:
Choisissez une difficulté:
> Facile (pièce 10x10, détecteur à 8 cases)
Moyen (pièce 20x20, détecteur à 5 cases)
Difficile (pièce 30x30, détecteur à 3 cases)