Misc. Console - skaaj/ensc-support GitHub Wiki
La console
La console n'est pas vouée à rester en noir et blanc. En fait, elle peut même être utilisée pour faire des jeu en 2D (comme ceux-ci).
La fenêtre a plusieurs propriétés modifiables :
- Un titre
- Une taille visible (taille de la fenêtre)
- Une taille logique (celle de la zone tampon)
- Un curseur
Le curseur
Le curseur est très intéressant car il permet de faire des nombreuses choses. En utilisation basique le curseur avance à chaque nouvelle entrée/sortie (Write, WriteLine, ReadLine, etc.). On dit qu'il suit le flux. En fait, il est possible de le positionner où on veut (on va le voir dans l'exemple). En plus de sa position on peut aussi modifier sa couleur de fond et de texte (comme sous un logiciel de traitement de texte). En résumé ses propriétés principales sont :
- Sa position
- Sa couleur de fond
- Sa couleur de texte
- Sa visibilité (masqué ou non)
Exemple
Voici un exemple afin de voir comment tout ce que l'on vient d'évoquer est réalisable :
(La partie (7) est un bonus)
static void Main(string[] args)
{
// 1. Changer le titre de la fenêtre
Console.Title = "Un titre";
// 2. On redimensionne la fenêtre
int width = 90; // 100 caractères par ligne
int height = 25; // 50 lignes
Console.SetWindowSize(width, height);
// Les deux lignes suivantes permettent d'enlever les scrollbars
// -> le buffer a la même taille que la fenêtre donc il n'y a plus besoin de scroller
// -> attention ceci limite le contenu à 'height' lignes
// si on veut écrire 'height'+ 2 lignes on perdra les 2 premières lignes
Console.BufferHeight = height;
Console.BufferWidth = width;
// 3. Changer la couleur du fond et du texte
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
// Rien ne change tant qu'on ne met pas à jour la console
Console.Clear();
// 4. Positionner son curseur à une autre position
// Le bord en haut à gauche équivaut à (x, y) -> (0, 0)
Console.SetCursorPosition(5, 1);
Console.Write("Ce texte est écrit à partir de la position (5, 1).");
Console.SetCursorPosition(6, 2);
Console.Write("Celui-ci à partir de la position (6, 2).");
Console.SetCursorPosition(0, 0);
Console.Write("Et celui-ci est au début (0, 0). ");
// 5. Changer la couleur du curseur
Console.BackgroundColor = ConsoleColor.Cyan;
Console.ForegroundColor = ConsoleColor.Black;
Console.Write("Et ce texte est écrit en noir sur un fond cyan !");
// On remet les couleurs par défaut
Console.ResetColor();
Console.SetCursorPosition(8, 8);
Console.WriteLine("Maintenant les couleurs sont celles par défaut");
// 6. Masquer le curseur
// Parfois on ne veut pas afficher le curseur (càd le gros rectangle qui clignote)
// On peut le masquer comme ceci :
Console.CursorVisible = false;
// 7. BONUS : Un peu de son :)
double periode = 7.0;
int amplitude = 200;
int freq_origine = 314;
int freq_ech = 100;
Console.SetCursorPosition(0, height - 1);
Console.Write("Appuyez sur une touche pour lancer le son...");
Console.ReadLine();
Console.WriteLine("Son en cours de lecture...");
for (int i = 0; i < 50; i++)
Console.Beep(freq_origine + (int)(amplitude * Math.Sin(i / periode)), freq_ech); // Console.Beep(frequence, durée)
Console.Clear();
Console.Write("Appuyez sur une touche pour quitter...");
Console.ReadLine();
}
Ce code a pour résultat :