Tracer un rectangle

Résolu
cs_alibm Messages postés 2 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 7 juin 2009 - 28 avril 2009 à 09:05
cs_alibm Messages postés 2 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 7 juin 2009 - 7 juin 2009 à 13:19
Bonjour,
J'ai un projet à faire en assembleur (tasm) dont le sujet de programmer un programme qui verfie si la souris est installé ou non puis faire tracer un rectangle en cliquant deuxfois càd faire deux points sur l'ecran et parsuite le rectangle sera affiché sur ecran
Par exemple, ci je clique sur deux points dont les coordonnées (1,3) et (3,2) (ce deux points feront le diagonale de ce rectangle) les deux autres points du rectangle seront (1,2) et (3,3).
Tout ça dans la  première version mais dans la deuxième on fait ce rectangle par le glissement de souris comme dans la séléction des fichiers.
J'ai arrivé à vérifier si la souris est installé et j'ai quelques codes pour faire la première version (presque marche).
S'il vous plaît, j'ai besoin d'aide dans la deuxième version.
Merci d'avance.

2 réponses

rdany62 Messages postés 12 Date d'inscription samedi 24 mars 2007 Statut Membre Dernière intervention 12 février 2016
3 juin 2009 à 22:52
Bonjour, à quel niveau tu as besoin d'aide (gestion VGA, souris ou calcul des lignes du rectangle) ?

Pour commencer, il faudrait que la première version (la plus simple) soit fonctionnelle.

Si j'ai bien compris: tu cliques à un endroit sure l'écran, çà définit les coordonnées du premier point (supérieur gauche) du rectangle et à un autre endroit çà défini les coordonnées du dernier point (inférieur droit) du rectangle. (pour le 1er exercice)

Donc, en pseudo code, sous Dos:

si (souris non présente)
{
   fin du programme
}sinon {
   passer en mode VGA (n'importe lequel, sous Dos on est en mode réel, il faudra changer de fenêtre d'affichage graphique)
   attendre un clic
   récupérer la position de la souris
   attendre le deuxième clic
   si (position1(x,y) différente de position2(x,y))
   {
      si (point à position1 dans la bonne fenêtre graphique)
      {
         position_actuelle(x,y)=position1(x,y)
         tracer le point à position_actuelle(x,y)         tant que (position_actuelle(x,y)> ou position1(x,y) ET position_actuelle(x,y)< ou position2(x,y))
         {
            si (position_actuelle(x,y) dans la bonne fenêtre)
            {
               si (position_actuelle(x)< ou = position2(x))
               tracer le point à position_actuelle(x,y)
                  incrémenter position_actuelle(x)
               si (position_actuelle(x)>position2(x))
               {
                  tracer le point à position_actuelle(x,y)
                  incrémenter position_actuelle(y)
                  position_actuelle(x)=position1(x)
               }
            } sinon {
               calculer la bonne fenêtre d'affichage graphique
               si (position_actuelle(x)< ou = position2(x))
                  tracer le point à position_actuelle(x,y)
                  incrémenter position_actuelle(x)
               si (position_actuelle(x)>position2(x))
               {
                  tracer le point à position_actuelle(x,y)
                  incrémenter position_actuelle(y)
                  position_actuelle(x)=position1(x)
               }
            }
         }
   fin du programme
}

Ca doit ressembler à quelque chose comme çà. Si tu fait çà en mode graphique, alors ne te tracasse pas avec le VGA et la fenêtre d'affichage vidéo, c'est pas utile.

Pour l'exercice 2, il faut tracer le rectangle tant qu'il y a le clic de souris et retracer tout le temps qu'on a pas relaché le bouton de souris, en effaçant l'écran lorsqu'il y a un mouvement (ce qui évitera d'avoir ton rectangle puis tout de suite l'effacement, ce qui au final donne un écran sans rectangle). En plus, faire comme çà permet d'avoir finit le tracé dès qu'on relache la souris.

J'espère t'avoir été utile...
3
cs_alibm Messages postés 2 Date d'inscription mercredi 29 octobre 2008 Statut Membre Dernière intervention 7 juin 2009
7 juin 2009 à 13:19
Bonjour,
Merci bien pour votre aide
0
Rejoignez-nous