M1103-TP5 Exercice 5 – Space Invaders

On souhaite ajouter un peu plus de souplesse à structure du fichier config.yalm de façon à pouvoir y ajouter des commentaires, permuter des lignes, … Seules les clés autorisées nous intéressent donc.

Ajouter le code suivant :

struct AuthorizedKey {
/* List of authorized key for the type char in a struct CMyParam*/
const vector<string> VParamChar {“KeyLeft”, “KeyRight”, “VesselToken”, “InvaderToken”, “KShoot”};
/* List of authorized key for the type string in a struct CMyParam*/
const vector<string> VParamString {“VesselColor”, “InvaderColor”};
/* List of authorized key for the type unsigned in a struct CMyParam*/
const vector<string> VParamUnsigned {“GridSize”};
};

Modifier la fonction LoadParams () comme cela : après avoir fait une extraction d’une clé fichier config.yalm, vérifier qu’elle appartient à la structure AuthorizedKey avant de l’insérer dans la structure CMyParam.

R1.01 – Prog#10 – Exercice 1

Mettre de la couleur dans le terminal sous GNU / Linux

Puisque les cours d’IHM (Interface Homme Machine) ne commencent qu’au second semestre, nous allons voir comment nous pouvons spécifier, dans un programme, la couleur des caractères ainsi que celle du fond d’une console, mais aussi effacer son contenu.
Puisque la console est une émulation d’un terminal VT100, toutes les instructions que nous allons lui donner commencent par \033[. Ensuite, une autre séquence d’instruction, concaténée à la première, provoque l’effacement de l’écran, le changement de la couleur de la police ou du fond.

Remarque : les informations évoquées dans cette partie fonctionnent aussi sous Mac OS-X, mais pas sous Windows.

Effacer l’écran

Afin d’effacer l’écran, la seconde séquence est : H\033[2J. En conséquence, la fonction suivante permet d’effacer l’écran :

void clearScreen () {
    cout << "\033[H\033[2J";
}

Copiez la, et mettez la dans votre espace de nom anonyme.

Changer la couleur

Afin de changer la couleur, la seconde séquence est : XXm, où m est le code de la couleur souhaitée. Ce code est constitué de 2 chiffres comme le montre le tableau suivant :

Couleur Code associé
0 réinitialise le système de couleur à la valeur par défaut du shell
30 Noir
31 Rouge
32 Vert
33 Jaune
34 Noir
35 Magenta
36 Cyan

Copiez le code suivant, et mettez le dans votre espace de nom anonyme :

const unsigned KReset   (0);
const unsigned KNoir    (30);
const unsigned KRouge   (31);
const unsigned KVert    (32);
const unsigned KJaune   (33);
const unsigned KBleu    (34);
const unsigned KMAgenta (35);
const unsigned KCyan    (36);
	
void couleur (const unsigned & coul) {
    cout << "\033[" << coul <<"m";
}

Le code suivant :

couleur (KRouge);
cout << "Rouge" << endl;
couleur (KVert);
cout << "Vert" << endl;
couleur (KReset);
cout << "Retour à la normale" << endl;

provoquera l’affichage :
Rouge
Vert

Retour à la normale

Changer le fond

Pour changer le fond, c’est exactement la même séquence d’instructions que pour changer la couleur. La seule différence provient du fait que les couleurs associées voient leur code respectif augmenté de 10.

Pour des informations complémentaires quant à la gestion du terminal (sous GNU / Linux), vous pouvez visiter cette page.