Utilisateur:Danaerg
Sommaire
Programme de " visuel en live "
Résumé
Ce petit programme génère des lignes horizontales de deux couleurs en alternance sur toute la largeur de l'écran. L'utilisateur a le choix pour les couleurs parmi : noir rouge vert jaune bleu rose turquoise gris
Découpe du programme et schémas
Le programme sera découpé en deux parties afin de faciliter sa réalisation :
1/ demander à l'utilisateur la première couleur, puis la deuxième, les afficher en alternance à l'écran, jusqu'à ce que le programme soit interrompu
2/ à cela, ajouter des fonctions d'interruptions permettant à l'utilisateur de taper une couleur sur le clavier n'importe quand alors que le programme continue à tourner. Avant ceci, nous pouvons imaginer que le programme soit interrompu en pressant sur la touche Enter.
Voici à quoi pourrait ressembler la version "finale" :
Tableau de correspondance des couleurs en bash. On voit que si on met une couleur de fond sur des espaces, (partie gauche du tableau) on devrait pouvoir obtenir des lignes horizontales comme souhaité.
La syntaxe
lorsqu'on code en bash dans le terminal, il y a plusieurs choses à faire coûte que coûte.
la première est de commencer son texte par
- "#!/bin/bash" sans les guillemets
la seconde est de rendre son fichier texte exécutable. Pour se faire, on utilise la commande
- chmod +x nomdufichier
- ./nomdufichier permet d'exécuter le script. Attention à ne pas mettre d'espace sinon ça ne fonctionne pas.
- nano nomdufichier permet d'ouvrir le script dans fenêtre afin de modifier le code
les commandes
- read -p "demander qqch à l'utilisateur et stocker la réponse dans" nomVariable
- echo "bonjour" permet d'afficher bonjour
- echo -e permet d'afficher ce qui suit mais le -e indique qu'il s'agit d'une commande (et non pas d'un simple mot comme au-dessus. par exemple : echo -e "\033[41m bonjour" va afficher bonjour avec un fond rouge.
- \033[Am est la syntaxe permettant de mettre un fond en couleur sur du texte. le "A" est a remplacé par un chiffre correspondant à la couleur souhaité (voir tableau de correspondance bash)
Le code
Version première
Résultat :
Aucun résultat, le programme tourne mais rien ne se passe et le curseur se met à des endroits bizarres.
Version première fonctionnelle
Si on décortique le code en français, nous avons :
des variables portant le nom de couleur, auxquelles on assigne la valeur des-dites couleurs d'après le tableau de correspondance.
- exemple : "noir" est le nom de la variable contenant la valeur "40m"
Puis on demande à l'utilisateur de choisir une couleur, et de stocker ceci dans couleurA, idem avec la deuxième couleur, qui elle sera stockée dans couleurB.
- on obtient par exemple
- couleurA = noir
- couleurB = rose
Ensuite vient la boucle pour l'affichage. "Tant que vrai" permet de créer une boucle infinie.
- mettre un fond de correspondant à couleurA sur un texte nul, attendre 0.1 seconde (impression de défilement)
- mettre un fond correspondant à couleurB sur un texte nul, attendre 0.1 seconde
On remarque que la syntaxe pour utiliser la valeur de couleurA et couleurB est un peu particulière. C'est dû au fait que dans la première version, ce qui était donné comme valeur à couleurA et couleurB était simplement "noir", ou "rouge", .... mais cela nécessitait une deuxième étape qui était celle d'analyser ces valeurs, pour voir si elles-même contiennent des valeurs. Dans notre cas, les noms de couleurs sont non seulement des valeurs (pour couleurA et couleurB) mais également des variables. En gros, cette syntaxe permet de dire par exemple :
- assigne à couleurA la valeur "noir" et regarde si "noir" contient une valeur, en l'occurence "40m"