CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Aide/programmation en C

News jeu

Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop

Voir
Kpook
Kpook
Niveau 4
12 avril 2002 à 19:21:40

Merci de bien vouloir lire mon SOS !

Je vous explique :

Chaque touche du clavier a un code (ASCII je crois?, je ne saisi plus) qui est transmit au driver, afin de traiter les données...

Si en C je veus que l´utilisateur ne puisse ce seervir que d´une touche, par exemple pour quitter, il doit saisir la touche <Echap> :
ex -> while ((saisie=getche()) != 27);

C´est déjà ça. Mais par ailleur, si je veus que le driver (ou le systeme d´exploitation) ne prènne en compte qu´une touche, celle de <Echap> de code 27, c´est ç dire que toutes les autres touches du clavier ne sont pas traité!

Merci de bien vouloir me répondre, en espérant avoir été assez explicite afin que vous puissiez me venir en aide!!!

Encore Merci!

Dark-Z
Dark-Z
Niveau 9
12 avril 2002 à 19:39:15

do you speak japanese ?
soory mais y´a des moment ou moi aussi j´ai envie de me lancer dans lc C++

Kpook
Kpook
Niveau 4
12 avril 2002 à 19:45:12

Ben en fait c´est pas du C++ mais du C, et je ne me lance pas dans la programmation, j´y suis!!!

Si quelqu´un pouvais me prouver qu´il n´y a pas que des gens dans ce Forum qui font des jeux avec Rpg Maker etc...

Lightness1024
Lightness1024
Niveau 10
12 avril 2002 à 19:59:50

ton application c´est quoi ?

parce que ca dépend ou sont traités les arrivées au clavier.
de toute maniere c´est impossible de désactiver les autres touches on les attrapes toutes, et ensuite on vérifie si la touche appuyée est celle qu´on veut.

en général un programme a une boucle generale, a chaque itération on teste le buffer clavier et si 27 y est, alors on quitte (on arrete la boucle).

Passage
Passage
Niveau 10
15 avril 2002 à 12:19:01

Eternelle question ... Quel systeme d´exploitation utilises tu ?

Nota :
Le clavier emmet un code vers le driver ( Scan code ). Le driver se charge de transformer ce scan code en code ascii ! Pis toi tu recupere le le code ascii.

Tu peux au lieu de tavailler sur le code ascii, travailler sur le scan code. Ceci te permet de positionner non plus en fonction de la touche ( A ) mais en fonction de la geographie ! ( la touche a cote de la tabulation A ou Q suivant que tu a un clavier qwerty ou azerty emmet toujours le meme scan code mais pas toujours le meme code ascii !)

Lightness1024
Lightness1024
Niveau 10
15 avril 2002 à 16:02:17

en effet.
mais il manque une derniere possibilité, la lecture NON-BUFFERISÉE. tout les jeux fonctionnent comme ca, on fait une capture du clavier en bas niveau ce qui permet d´utiliser PLUSIEURS touches en meme temps et surtout de ne pas etre dépendent de la répetition imposée par le driver.

Kpook
Kpook
Niveau 4
15 avril 2002 à 19:50:20

En fait, pour plus de précision, je suis en train de faire un MasterMind sous dos (donc sans effets graphiques, et sous win...) :

L(utilisateur doit saisir des nombres (de 1 à 4 par default) dont une fonction de mon programme analyse, modifie et affiche les caractères décimales 1, 2, 3, 4, 5 (voir dans le tableau de la table ASCII les premiers caractères) si ceux là sont justes. A chaque fois, l´utilisateur doit saisir une nouvelle... saisie. Mais s´il a le malheur de saisie la Touche <Tab>, <Entrer> ou autre, il y aura un retour à la ligne, même si je je fais en sorte d´annuler la touche :
(ex: while(getch()!=´\n´);

Cela pose problème du fait que le programme sera saccader on va dire. Je vous demande donc, s´il en existe, de me proposer une fonction qui gère cela!

Sinon, pour du moins compliqué, je pourrais mettre en relation deux fenêtres dos (donc deux programme), dans un l´utilisateur peut saisir des caractères, dans l´autre on traite et on affiche le résultat, sachant que l´on sauvegarde chaque saisie de l´utilisateur dans un fichier (d´extention .dat par exemple en mode écriture), et que l´autre programme ouvrira en mode lecture pour vérification et affichage.
Je pense que c´est possible, je vous demande votre avis!
Merci

Kpook
Kpook
Niveau 4
15 avril 2002 à 19:56:12

Suite de ->| //juste en haut

Sinon je voudrai savoir si lorsque l´on retire un caractère du buffer clavier, on arriverai à résoudre mon problème!

Encore Merci!

Kpook
Kpook
Niveau 4
15 avril 2002 à 22:30:37

gotoxy() n´est pas une fonction standard du C?

enfin bon je fais ma recherche.
Merci pour le(s) tuyaux!!!

Lightness1024
Lightness1024
Niveau 10
15 avril 2002 à 23:10:11

1erement faire 2 fenetres DOS demanderait a faire une application multithread, (ce qui est d´une simplicité extreme a faire)
mais par contre pour faire une appli bien synchronisée c chian puis toute maniere c pas pratique 2 fenetres enfin bon non c pas la solution.
la solution c´est pas non plus de revenir en arriere mais tout simplement de faire une étape en plus.
voila:
au lieu de faire un getche ou je c pas koi tu n´affiches RIEN a l´ecran.
tu récuperes d´abord le buffer:

int main()
{
.
.
.
do
{
.
.
TCHAR KeyBuffer = 0;
KeyBuffer = getch();
switch (KeyBuffer)
{
case 27:
exit;
case 13:
// touche entrée
break;
case x:
// action x
break;
.
.
.
}
.
.
.
} while (une condition X);
.
.
}

Lightness1024
Lightness1024
Niveau 10
15 avril 2002 à 23:11:20

et dans Action X si c´est une touche de numéro valide, tu l´affiches a l´ecran avec

printf ("\%c", KeyBuffer);

kelemvor
kelemvor
Niveau 3
16 avril 2002 à 20:06:38

le probleme, est que lorsque tu fais un getch(); le caractere est affiche(en fait ca depends du compilateur utilise, enfin de la lib du compilateur plutot, avec DEV-C++ le caractere est affiche, tandis qu´avec turbo c++ 3.0 il ne l´est pas).

Lightness1024
Lightness1024
Niveau 10
17 avril 2002 à 14:51:32

la fonction normale getch() n´affiche rien du tout!
par contre si on veu afficher on utilise getche()

e comme echo.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware