Entrée sans la touche entrée
Résolu/Fermé
LongAzBan
Messages postés
32
Date d'inscription
samedi 11 avril 2015
Statut
Membre
Dernière intervention
10 juin 2016
-
7 juin 2016 à 18:35
LongAzBan - 16 juin 2016 à 18:14
LongAzBan - 16 juin 2016 à 18:14
A voir également:
- Entrée sans la touche entrée
- Pas d'entrée video ✓ - Forum Matériel informatique
- Touche rémanente - Guide
- Le point d'entrée de procédure setdefaultdlldirectories est introuvable ✓ - Forum Windows 7
- Touche entrée ne fonctionne plus ✓ - Forum Clavier
- Le point d'entrée de procédure est introuvable dans la bibliothèque de liens dynamiques ✓ - Forum Logiciels
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
7 juin 2016 à 22:34
7 juin 2016 à 22:34
Bonjour,
Rien de standard en C.
Vous souhaitez le faire en console, avec un interface graphique, ou genre un jeu (3D) ?
Rien de standard en C.
Vous souhaitez le faire en console, avec un interface graphique, ou genre un jeu (3D) ?
8 juin 2016 à 18:38
Tout d'abord, désolé pour le retard.
Je voulais faire un "synthé" en ascii, avec la fonction Beep (system), mais pour l'utilisateur c'était un peu galère d'appuyer sur entrée à chaque note ^^
Sinon, connais-tu un moyen de le faire en c++, ou avec un librairie graphique ou autre ?
Merci de m'avoir répondu,
L
8 juin 2016 à 22:20
Exemple, la fonction Beep() n'est pas standard, mais tu vas l'utiliser ;-).
Pour permettre à l'utilisateur d'appuyer sur des touches sans valider avec la touche entrée, tu peux utiliser la fonction _getch() (il faut inclure conio.h)
9 juin 2016 à 18:22
J'arrive enfin à faire mon synthé (en partie... il coupe le son à chaque tour de boucle)
Je publie le code, pour ceux que ça intéresse (il n'y pour l'instant que le la en note, mais on peut rajouter les autres notes)
#include <stdio.h> #include <windows.h> #include <stdlib.h> #include <conio.h> int main() { int end = 0; char c;aaaa printf("0 pour quitter, a pour LA"); while (! end) // ! pour dire dans que la condition est fausse { c=getch(); // la saisie est stockée dans la variable c if (c == '0') { end = 1; // pour quitter } if (c == 97) // code ascii de la lettre a minuscule { Beep(440,400); // note de 440 hertz, pendant 400ms } } return 0; return 0; }9 juin 2016 à 21:21
Tu as mis getch(). Mais comme je t'ai dit, c'est _getch() qu'il faut mettre. getch() est obsolète (même si cela fonctionne...).
Après ton char c; tu as 4 a qui sortent de je ne sais où. À supprimer.
Tu as mis 2 fois return 0; L'un des deux est inutie.
Tu as mis char c. Il faut plutôt mettre int c;
if (c == 97)
Evite le code ascii, c'est peu visible. Et du coup, tu peux supprimer le commentaire. De plus, il vaut mieux utiliser le else if.
Cela donne donc else if (c=='a')
A noter que tu peux également utiliser un switch. Ou même te passer de la variable end.
10 juin 2016 à 17:13
Désolé pour ce code fait un peu fait à l'arrache, je voulais juste tester mais les codes trouvés sur des forums aident parfois donc je l'ai publier quand même.
J'ai lu sur openclassroom.com (le site du zéro) que pour les caractères, un char était fréquemment utilisé : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/15765-les-chaines-de-caracteres
Voilà le code corrigé : (merci de tes conseils )
#include <stdio.h> #include <windows.h> #include <stdlib.h> #include <conio.h> int main() { int c = 1; // ou char printf("0 pour quitter, a pour LA"); while (c) { c=_getch(); // la saisie est stockée dans la variable c switch (c) { case 'a' : Beep(440,500); // note de 440 hertz, pendant 500ms break; case '0' : c = 0; break; } } return 0; }