cs_alibm
Messages postés2Date d'inscriptionmercredi 29 octobre 2008StatutMembreDernière intervention 7 juin 2009
-
28 avril 2009 à 09:05
cs_alibm
Messages postés2Date d'inscriptionmercredi 29 octobre 2008StatutMembreDerniè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.
rdany62
Messages postés12Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention12 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.