10 sec pour saisir sinon on continue

10 sec pour saisir sinon on continue - Ada - Programmation

Marsh Posté le 31-05-2006 à 16:50:33    

Bonjour a tous,  
voila, je planche sur le pacman, qui s'affiche a la console, je sais ca fait pas très jolie mais c'est rigolo.
voila :  
 
pacman is record :
i : indice ligne
j : indice colonne
dir : direction vers la quelle il se deplace
end record ;
 
je jeu se deroule donc sur un tableau(i,j).
il y'a verfication de la future position du pacman grace a sa direction et sa sposition avant deplacement (pour ne pas ecraser un mur).
 
lors que le deplacement est impossible, alors on demande une saisie de la ndirection a l'utilisateur :  
get_immediate(dir);
 
mais du coup, il ne peut changer de direction, que lorsqu'il rencontre un probleme!
or si le joueur veut le deplacer a droite sur un chemin en cours de route au lieu de continuer vers le haut, il ne peut pas!
------------> DONC
comment dire : tu a 0.3 sec pour saisir une nouvelle direction, sinon on continu les instructions.
 
 
Merci a tous pour votre aide

Reply

Marsh Posté le 31-05-2006 à 16:50:33   

Reply

Marsh Posté le 31-05-2006 à 16:51:02    

De plus, j'ai un autre probleme :  
je pense que cela vient du BUFFER :  
disons que si je saisi des le depart les direction haut, bas,gauche,droite...
 
alors le pacman va se deplacement (lorsqu'il le peut) selon cette ordre que je lui ai donné.
 
les direction ont été enregistrée et utilisés alors que "normalement" la saisie(dir) n'a pas été demandé.
 
je pense devoir vider le buffer (car j'avais deja eu un problme identique de saisie et ca venait du buffer selon la prof) mais j'ai perdu la commande qui permet de vider ce buffer (et j'ai tout GoogleIsé!
 
merci beaucoups vous m'etes d'une grand aide.
merci encore

Reply

Marsh Posté le 31-05-2006 à 19:06:40    

felben86 a écrit :

De plus, j'ai un autre probleme :  
je pense que cela vient du BUFFER :  
disons que si je saisi des le depart les direction haut, bas,gauche,droite...
 
alors le pacman va se deplacement (lorsqu'il le peut) selon cette ordre que je lui ai donné.
 
les direction ont été enregistrée et utilisés alors que "normalement" la saisie(dir) n'a pas été demandé.
 
je pense devoir vider le buffer (car j'avais deja eu un problme identique de saisie et ca venait du buffer selon la prof) mais j'ai perdu la commande qui permet de vider ce buffer (et j'ai tout GoogleIsé!
 
merci beaucoups vous m'etes d'une grand aide.
merci encore


skip_line; je crois

Reply

Marsh Posté le 31-05-2006 à 19:13:25    

felben86 a écrit :

Bonjour a tous,  
voila, je planche sur le pacman, qui s'affiche a la console, je sais ca fait pas très jolie mais c'est rigolo.
voila :  
 
pacman is record :
i : indice ligne
j : indice colonne
dir : direction vers la quelle il se deplace
end record ;
 
je jeu se deroule donc sur un tableau(i,j).
il y'a verfication de la future position du pacman grace a sa direction et sa sposition avant deplacement (pour ne pas ecraser un mur).
 
lors que le deplacement est impossible, alors on demande une saisie de la ndirection a l'utilisateur :  
get_immediate(dir);
 
mais du coup, il ne peut changer de direction, que lorsqu'il rencontre un probleme!
or si le joueur veut le deplacer a droite sur un chemin en cours de route au lieu de continuer vers le haut, il ne peut pas!
------------> DONC
comment dire : tu a 0.3 sec pour saisir une nouvelle direction, sinon on continu les instructions.
 
 
Merci a tous pour votre aide


 
 
je connais un peut le problème, c'est une question de construction du programme dans sa globalité
 
on devroit avoir
 

Code :
  1. procedure main is
  2.  
  3.  
  4.  
  5.   task main_task_pacman is
  6.         entry recevoire(un : character);
  7.   end main_task_pacman;
  8.  
  9.   task body main_task_pacman is
  10.        -- declaration
  11.        begin
  12.              loop
  13.                    select
  14.                         accept recevoire(un : character) do
  15.                               -- faire ce qu'il faut
  16.                         end recevoire
  17.                      or
  18.                          delay 3.0
  19.                          -- faire ce qu'il faut
  20.                     end select
  21.              end loop;
  22.   end main_task_pacman;
  23.  
  24.    char : character;
  25. begin
  26.    loop
  27.       get_immediate(char)
  28.       main_task_pacman.recevoire(char);
  29.    end loop;
  30. end main;


 
 
mais, je suis qu'un amateur  

Reply

Marsh Posté le 04-06-2006 à 11:43:38    


 
Trop modeste Jovalise ;)

Reply

Marsh Posté le 06-06-2006 à 16:38:09    

:hello:  
 
Alors, t'en est oû,
 
donne nous de tes nouvelles,
 
est-ce que mon algo t'a orienter sur la bonne piste ?

Reply

Marsh Posté le 10-06-2006 à 11:08:36    

alros voila de mes nouvelles
grace a jovalise j'ai reussi mon pacman :
dans le fond, j'ai du crée une tache.
 
je rappelle le probleme : le pacman ne doit pas attendre la saisie pour continuer son chemin alors que sa direction est conditionné par sa saisie.
et l'on sait que si je fait  get(dir), le prog va bloquer dessus
 
alors :
--> tache1 : saisie (non bloquante qui attend une saisie). la tache est un deuxieme processus (en gros) qui tourne independament (si on ne le conditionne pas) du programme principale, donc lui seulement va bloquer sur la saisie
--> tache 2 : toutes les 0.25 sec, elle recupere la direction: (qu'elle ait été saisie ou non, cette direction a été initialisé).et verifie sa validité : rerécupere jusqu'a...valide, si valide : un boolean passe a 1
--> le pacman (prog principal) vient ensuite recupéré cette direction seulement si le boolean est a 1.
 
voila voila,  
grace a vous j'ai appris les taches c es ttrop de la balle
 
merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed