Mode graphique en pascal

cs_chacha7611 Messages postés 3 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 4 décembre 2007 - 4 déc. 2007 à 18:49
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 - 6 déc. 2007 à 11:10
Bonjour à tous,
Je suis entrain de programmer un jeu en pascal.
J'aimerais savoir s'il été possible de récupérer une touche en mode graphique. Je m'explique : l'utilisateur doit appuyer sur une touche pour continuer à jouer. (l'équivalent du readln). Donc je voudrais savoir s'il est possible de le faire et de la récupérer sans repasser dans la petite fênetre ms-dos.
Merci d'avance,
Cordialement

3 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
4 déc. 2007 à 23:00
Bonsoir

Pour la gestion du clavier, tu as deux choses principales à faire :
  - Dans les propriétés de ta fiche mettre KeyPreview à la valeur TRUE. 
  - Ajouter le code suivant dans l'événement OnKeyDown de ta fiche :

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    VK_NUMPAD4 : 
    begin
      // Traitement si appui de la touche 4 du pavé numérique  
    end ;
  end ;
end;

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
5 déc. 2007 à 09:43
de memoire il y a la fonction readkey
qui permet de savoirs'il y a eu une touche pressée ou qui attend que l'on presse une touche
je sais plus bien çà date un peu ^_^
0
Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
6 déc. 2007 à 11:10
Bonjour,

La fonction keypressed retourne un booléen pour te dire si une touche a été appuyée (attention ce n'est pas une fonction blocante comme readln). et la fonction readkey te permet de connaitre la touche qui a été appuyée (elle ne lit qu'un seul caractére du buffer).

exemple pour faire quelque chose :
touche : char;
While touche <>chr(13) do // tu quitte la fonction si appui sur la touche entrée
    begin
       while keypressed=false do
          begin
             ... tu fais ce que tu veux en attendant l'appui sur une touche (dessin etc...)
          end;
       touche:=readkey; // ou readkey(touche) je ne souvient plus trop
       ... tu réagit en fonction de ton appui sur la touche
    end;

Oniria
0
Rejoignez-nous