Bien le bonjours tout le monde.
Comme dit dans le titre, j'aimerais savoir faire un menu de Sélection où grâce a ce petit caractère ">" qui nous servira de curseur, permettre aux utilisateur de choisir leur choix. Je m'explique;
A l'heure actuel bien que je débute, j'ai pour projets de faire un petit jeux en mode Console. Ce petit jeux consistera à faire une histoire avec avec l'utilisateur. Bien entendu, le scénario et l'histoire global est déjà écrites.
Mais étant donnée qu'il y aura que du texte, je veux faire interagir l'utilisateur au maximum, c'est-à-dire qu'il y aura beaucoup de choix possible et selon c'est réponses il sera diriger vers d'autre scénario.
Je peux également faire en sorte de demander à l'utilisateur de taper sur les touche 1, 2, 3, 4... Pour choisir le choix qu'il décidera, mais ça ne m'intéresse pas vraiment, je veux vraiment quelque chose un peu plus poussé.
J'avais pour idée aussi de faire un menu déroulant pour donner un peu plus de couleurs que le blanc et noir, mais au bon du coup, c'est vraiment mais vraiment pas terrible.
Je vous donne un exemple concret.
Personnage = Hey est-ce que tu m'entends ?
Utilisateur = Oui, je ne suis pas sourd
Personnage = Hé hé oui, désolé. J'espère que je ne te dérange pas.
Choix utilisateur
1 = Non pas du tout
2 = Je suis occuper là...
3 = Ça dépends c'est pourquoi ?
Si réponse 1 | Personnage = Tu n'aurais pas vu une jeune femme par hasard ?
Si réponse 2 | Personnage = Excusez-moi... Pourrais-tu m'accorder quelque secondes ?
Si réponse 3 | Personnage = Pour savoir si tu aurais pas croisé une jeune femme...
Etc... Etc... Etc...
Au bout du coup, il y aura une ou plusieurs histoires de cette façon, avec un scénario écrit au préalable.
Du coup, je vous envoie le code que j'ai pu faire;
Le code fonctionne c'est pas le soucis, mais ça va me posé d'énorme problèmes à la longue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> void Locate(SHORT x,SHORT y) { HANDLE hmenu=GetStdHandle(STD_OUTPUT_HANDLE); COORD Pos; Pos.X = x; Pos.Y = y; SetConsoleCursorPosition(hmenu,Pos); } void Afficher(int curs) { Locate(3,0); printf("%c Jouer\n\n",(curs==0)?'>':' '); Locate(3,2); printf("%c Quitter\n\n",(curs==1)?'>':' '); Locate(3,4); } int Choisir() { int curs = 0; int touche; do { Afficher(curs); touche = _getch(); if (touche==0xE0) // fleche : le code fleche renvoie 2 caracteres. { touche = _getch(); if (touche==0x50 && curs==0) // fleche bas curs = 1; else if (touche==0x48 && curs==1) // fleche bas curs = 0; } } while (touche!=0x0D); // enter return curs; } int main() { int choix; choix = Choisir(); Locate(0,7); printf("Vous avez choisi : %s\n\n\n",(choix==0)?"Jouer":"Quitter"); return 0; }
Je vais devoir faire énormément de variables, de void.
Du coup, est-ce que vous avez une technique pour faire un menu déroulant dans un void (Que je placerais dans un Fichier.h) qui me permettra simplement de placer dans une boucle quand il y aura un choix. Mais j'aimerais si possible que sa soit simplement le curseur qui se déplace sans avoir à écrire comme dans mon code plusieurs fois les mêmes phrases.
Maintenant regarder se code "C'est presque le même avec quelque trucs rajoutés.
Donc, j'ai changer un peu mon code, j'ai rajouter un Menu Réglement; Si vous regarder bien le dernier printf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 void Locate(SHORT x,SHORT y) { HANDLE hmenu=GetStdHandle(STD_OUTPUT_HANDLE); COORD Pos; Pos.X = x; Pos.Y = y; SetConsoleCursorPosition(hmenu,Pos); } void Afficher(int curs) { Locate(3,0); printf("%c Jouer\n\n",(curs==0)?'>':' '); Locate(3,2); printf("%c Réglement\n\n",(curs==1)?'>':' '); Locate(3,4); printf("%c Quitter\n\n",(curs==2)?'>':' '); } int Choisir() { int curs = 0; int touche; do { Afficher(curs); touche = _getch(); if (touche==0xE0) // fleche : le code fleche renvoie 2 caracteres. { touche = _getch(); if (touche==0x50 && curs==0) // fleche bas curs = 1; else if (touche==0x50 && curs==1) // fleche bas curs = 2; else if (touche==0x48 && curs==2) // fleche haut curs = 1; else if (touche==0x48 && curs==1) // fleche haut curs = 0; } } while (touche!=0x0D); // enter return curs; } int main() { int choix; choix = Choisir(); Locate(0,7); printf("Vous avez choisi : %s\n\n\n",(choix==0)?"Jouer":"Réglement":"Quitter"); return 0; }
Qui se trouve tout en bas de page. Il ne fonctionne pas. Ça me dis une erreur; Error: expected ')' before ':' token
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("Vous avez choisi : %s\n\n\n",(choix==0)?"Jouer":"Réglement":"Quitter");
Puis avouez quand même qu'un jeux comme j'aimerais faire, avec un code comme ça pour chaque choix, je vais jamais en voir le bout et je prendrais le chemin super long. Je suis sur que vous arriverez à me donner un raccourcis.
J'espère que j'ai pas été trop flou, ni trop vague et que vous allez comprendre mon problème. Si vous avez des questions, n'hésitez pas.
Je vous dis un grand merci et à bientôt !
Partager