IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Equivalents de keypressed et delay en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut Equivalents de keypressed et delay en C++
    bonjour,
    j'ai réalisé un tetris en pascal il y a quelques temps, et je voudrais le passer en C++ (ce sont les langages que l'on utilise dans mon BTS). Pour les choses de base comme les boucles et les conditions je n'ai pas eu de problèmes, mais il y a certaines commandes pascal dont je ne connais pas l'équivalent en C++ (s'ils existent).
    Pour la gestion des touches je procédais ainsi : (en pascal)

    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
     
    If keypressed then
             begin
             tch:=readkey;
             If tch=#52 then (*appui sur flèche gauche*)
                begin
                ....        
                end
             ; (*end if*)
     
             If tch=#54 then (*appui sur flèche droite*)
                begin
                .....
                end
             ; (*end if*)
     
             If tch=#53 then (*appui sur 5*)
                begin
                ....            
                end
             ; (*end if*)
     
              end
    ; (*end if*)
    pour le readkey si j'ai bien compris l'équivalent est getch et pour mes conditions je n'ai qu'a enlever les dièses ? par exemple : (tch est de type char)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       tch=getch();
       if tch==52 { /*appui sur flèche gauche*/
          ....        
       }; 
     
       if tch==54 { /*appui sur flèche droite*/
          ....        
       };
    Le problème vient surtout du keypressed, en effet je vérifie quelle touche a été pressée et j'agit en conséquence UNIQUEMENT si une touche a été pressée, sinon dans mon tetris le jeu attendrais que je presse une touche pour continuer...
    Y a-t-il une équivalent de keypressed en C++ qui me permettrai de lire le code de la touche uniquement quand une touche est pressée ? ou dois-je repenser mon système de gestion des touches ?

    J'utilisais également la commande delay en pascal pour temporiser ma boucle, y a-t-il un équivalent ? (procédure qui attend tant de milisecondes)
    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Il n'y a rien de tout cela en C++.
    Il faut que tu te trouves une API externe d'interfacage graphique ou textuel et que tu regardes sa doc.
    Cf les FAQ C++ et C.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut
    merci
    pour remplacer delay j'ai trouvé sleep :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <time.h>
     
    void sleep(unsigned int mseconds)
    {
        clock_t goal = mseconds + clock();
        while (goal > clock());
    }
    pour la gestion du clavier j'ai trouvé ça :
    http://tcharles.developpez.com/simul/ .. il ne me reste plus qu'a me retrousser les manches ! j'aurais pas du demander en fait..j'ai fini par trouver tout seul.
    Pour la représentation graphique je ne sais pas vraiment quelle bibliothèque spécialisée utiliser, le choix est aussi simple que :
    j'utilise visual C++ je choisi MFC, j'utilise C++ builder je choisit VCL ?

  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Ton sleep est mauvais:
    - il fait de l'attente active (consomme du CPU pour rien)
    - il est donc en plus peu fiable (même si un bon sleep est limité en précision).
    Sous Windows tu as Sleep(), dans <windows.h>.

    Pour le GUI:
    http://c.developpez.com/faq/cpp/?pag...GENERALITE_gui

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 10
    Par défaut
    ok merci, il me semblai bien que sleep() existait déja, mais je ne savais pas dans quelle bibliothèque il se trouvait. Je présume que pour le sleep() il faut entrer un temps en milisecondes ?

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Sleep, avec un S majuscule. Oui, c'est en ms. C'est spécifique Windows.
    http://msdn.microsoft.com/library/en-us/dllproc/base/sleep.asp

Discussions similaires

  1. equivalent de l'instruction Delay(?).
    Par bonbino dans le forum C++Builder
    Réponses: 17
    Dernier message: 24/10/2006, 23h44
  2. [Free Pascal] Equivalent de Delay en Free Pascal ?
    Par sofiane44 dans le forum Free Pascal
    Réponses: 2
    Dernier message: 01/03/2006, 18h58
  3. [Kylix] Equivalent ShellExec en CLX
    Par Anonymous dans le forum EDI
    Réponses: 7
    Dernier message: 14/08/2002, 11h55
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. [Kylix] equivalent winsock avec kylix
    Par Victor dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 07h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo