Tracer un rectangle [Résolu]

cs_alibm 2 Messages postés mercredi 29 octobre 2008Date d'inscription 7 juin 2009 Dernière intervention - 28 avril 2009 à 09:05 - Dernière réponse : cs_alibm 2 Messages postés mercredi 29 octobre 2008Date d'inscription 7 juin 2009 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
rdany62 14 Messages postés samedi 24 mars 2007Date d'inscription 12 février 2016 Dernière intervention - 3 juin 2009 à 22:52
3
Merci
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...

Merci rdany62 3

codes-sources a aidé 87955 internautes ce mois-ci

Commenter la réponse de rdany62
cs_alibm 2 Messages postés mercredi 29 octobre 2008Date d'inscription 7 juin 2009 Dernière intervention - 7 juin 2009 à 13:19
0
Merci
Bonjour,
Merci bien pour votre aide
Commenter la réponse de cs_alibm

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.