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

Turbo Pascal Discussion :

Introduire un délai de réponse [Turbo Pascal]


Sujet :

Turbo Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Introduire un délai de réponse
    Salut tout le monde.

    Svp j'aimerais savoir s'il existe une fonction pour gérer le temps sur Turbo Pascal.
    Ex : j'aimerais laisser un délai de 30 secondes pour répondre à la question 1; après ce délai, passer à la question 2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    writeln('Le system solair compte combien de planetes?');{question 1}
    readln(reponse);
    writeln('Sur quelle planete y trouve t'on la vie?');{question2}
    Une personne a une idée ???
    Merci

  2. #2
    Membre du Club

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Salut lex001 !

    Toujours dans ton projet de quizz ?

    Bon, la fonction est trés simple, il s'agit de DELAY.

    Cela s'écrit ainsi : Normalement, la variable entre parenthèse s'exprime en millisecondes, ce qui fait que 1000 donne un délai de 1s, 2000, 2s, etc...

    Toutefois, TP7 étant une vieille machine, il s'avère que cette fonction est dépendante de la vitesse du processeur et par conséquent, 1000 sur nos ordinateurs d'aujourd'hui ne fera pas 1s.

    Perso, j'ai résolu le pb en créant un fichier extérieur rassemblant toutes les options sélectionnées par le joueur dont une pour régler le délai d'affichage d'un message et un autre pour régler le délai d'attente entre deux clics de souris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VAR tempo_souri : word;
    . Ainsi, chacun est libre de paramétrer le temps d'affichage.

    Sur mon ordi, la variable tempo_msg doit être de 2000 environ pour tenir 1 seconde.

    Une fois régler ton pb de QUIZZ, tu devrais penser à inclure cette possibilité de régler le délai d'attente.

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 938
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Je ne suis pas sûr que Delay corresponde à l'attente de lex001. Si on insère un Delay après avoir posé la question, cela va entraîner que l'utilisateur devra attendre x millisecondes avant de pouvoir répondre.

    Pour laisser un délai de x millisecondes à l'utilisateur pour répondre, il faudrait plutôt programmer un timer. La difficulté vient cependant du fait qu'il faut interrompre proprement l'utilisateur s'il est en train de répondre, ce qui exclut de lire les réponses avec ReadLn. La solution la plus élégante serait donc de réécrire un ReadLn incluant un timer interne.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    la solution proposée par Alcatîz me parait etre la mieux adaptée. en peut y arriver en utiliser la fonction readkey qui lit une touche à la volée, et la fonction getTime de l'unité dos.

  5. #5
    Membre du Club

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Carrément ! Je viens de relire l'énoncé du problème et effectivement, DELAY n'est pas adapté. Comme quoi, quand on a un exercice, il convient toujours de bien lire l'énoncé et comprendre ce qu'on demande...

    Je suis d'accord qu'une boucle renvoyant gettime et comparant les résultats est la meilleure solution. Elle se finirait selon le motif arrivant le premier :
    - soit le temps est écoulé (valeur entre le premier gettime - à conserver dans une variable - et le dernier dépasse le temps alloué);
    - soit le clavier est activé. Mais si on utilise readkey, il ne faut pas oublier d'intégrer la saisie au reste du texte (car readkey renverra dans la variable la première touche frappée).

  6. #6
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par DUGUERPF Voir le message
    Mais si on utilise readkey, il ne faut pas oublier d'intégrer la saisie au reste du texte (car readkey renverra dans la variable la première touche frappée).
    readkey renvoie biensur un caractere. Il faut dans la boucle verifié si une touche est appuyé, de recuperer ce caractere et de le concatener avec les valeurs precedemment lues, ou arreter la boucle si un la touche "Entrée" a ete appuyée par exemple.

    On peut aussi vider le buffer avant la lecture d'une nouvelle chaine avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while (keyPressed) do
      readkey;

  7. #7
    Membre du Club

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Totalement d'accord. Je voulais justement pointer du doigt qu'il ne faudrait pas oublier de concatener le reste de la saisie avec le premier caractère pour avoir la réponse.

  8. #8
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour

    Je crois que tu auras un début de réponse dans cette discussion
    http://www.developpez.net/forums/d55...robleme-delay/

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Merci
    Merci a tous .Avec vous explications et ce lien
    http://www.developpez.net/forums/d55...probleme-delay/

    j'a reussi a trouver ce que je cherchais.
    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
     
    program time_;
    uses dos,crt;
    var c:char;
    s,m,h,hund:word;
    time,tem,lon : integer
    text:string;
     
    begin
    gettime(h,m,s,hund);
    time:=(h*20*60+(m*60)+s;
    tem:=time+10;
          repeat
    gettime(h,m,s,hund);
    time:=(h*20*60+(m*60)+s;
           if keypressed then begin
    C:=readkey; 
           if c=#8 then begin lon:=length(text);
    delete(text,lon,1);
    clrscr;writeln(text) end 
           else begin text:=text+c;
    clrcr;
    writeln(text); end;end;
             until (c=#13)or(c=#17)or (time>=tem);
    readln
    end.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Turbo Pascal] Introduire un délai de réponse dans un Quizz
    Par fizzpass dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 27/11/2012, 15h55
  2. [1.x] délai de réponse ahurissant
    Par erictomcat dans le forum Symfony
    Réponses: 24
    Dernier message: 11/01/2011, 13h17
  3. délai de réponse après postulation
    Par Enohra dans le forum Contrat
    Réponses: 3
    Dernier message: 10/05/2009, 20h01
  4. Réponses: 3
    Dernier message: 24/05/2006, 11h39

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