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

Pascal Discussion :

Utiliser ReadKey sans interrompre le programme


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut Utiliser ReadKey sans interrompre le programme
    Bonjour à tous,
    je me suis lancé dans la programmation d'un Snake en pascal, mais je suis bloqué. J'ai fait mes procédures pour que le snake aille dans la direction que je veux avec les paramètres qui vont bien, et ça marche au poil, mais je voudrais pouvoir effectuer mon readkey en même temps qu'une "différence de temps" pour que le snake continue d'avancer en attendant la touche de l'utilisateur. Problème : le readkey me stope l'exécution du programme jusqu'à ce qu'un touche soit pressée, ce qui n'est pas l'effet escompté. Un solution miracle ? Aussi, quel moyen y'a-t-il pour prendre en compte les flèches directionnelles et éviter de devoir utiliser les touches i,l,k et j ?

    Question subsidiaire : Y'a-t-il un moyen de faire de la programmation modulaire en pascal ?

    Merci d'avance,
    Nakwakwak

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    le mot clé m'échappe car la mémoire me fait défaut, mais il me semble que Keypressed te permet de savoir si une touche a été appuyée et qu'il faut donc appeler ReadKey pour la lire.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    le mot clé m'échappe car la mémoire me fait défaut, mais il me semble que Keypressed te permet de savoir si une touche a été appuyée et qu'il faut donc appeler ReadKey pour la lire.
    Merci Paul TOTH . Ça me fait bien du bien !

  4. #4
    Membre éclairé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Par défaut
    Quand tu appuis sur une touche, elle va dans une mémoire tampon. Après tu dois utilisé la méthode de PAUL TOTH

    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
     
     
    var
      ch : char;
     
    begin
     
      repeat
     
        while keypressed do ch := readkey;
     
        case ch of
           (* Gestion de la touche *)
        end;
     
      until ch = #27; (* Touche ECHAP pour quitter *)
     
    end.
    Le touches directionnelles ont un code ASCII. Je me rappel que les touches haut et bas qui ont les caractères 72 et 80 respectivement. Pour droite et gauche, il faudra que tu fasse une recherche sur google.

    Pour l'utilisation des touche directionnelle, tu doit ajouter le préfix # qui fais une conversion du code au caractère, comme utilisé dans mon exemple avec echap.

    Si par programmation modulaire tu entends Fonctions et procedures, oui tu peut en faire. Va voir sur la FAQ pascal, tu trouveras tout ce qu'il te faut


    Espèrant t'avoir aidé

    Titeeee

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    attention, certaines touches renvoient 2 code ascii

    je ne sais plus lesquelles ceci dit
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/10/2009, 12h55
  2. Utilisation d'un Look And Feel sans recompiler un programme
    Par Hell_Hibou dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/09/2009, 16h07
  3. [SWT] utiliser SWT sans eclipse
    Par miel_pops dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 24/01/2009, 20h48
  4. Réponses: 1
    Dernier message: 30/07/2006, 02h35
  5. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31

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