LA SOURIS [BORLAND TURBO C++ 3.0]

eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022 - 25 août 2003 à 23:03
zwawa89 Messages postés 6 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 10 février 2011 - 21 août 2009 à 01:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/9589-la-souris-borland-turbo-c-3-0

zwawa89 Messages postés 6 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 10 février 2011
21 août 2009 à 01:31
merci mes amis
cs_henock Messages postés 14 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 30 juillet 2010
21 avril 2005 à 22:00
c'est c'est justement ce que je cherche depuis un bon bout de temps et je crois qu'avec ça ma source paraitra bientot.merci pour la source henock

www.e-monsite.com/henockmermoz
cs_751 Messages postés 68 Date d'inscription vendredi 3 mai 2002 Statut Membre Dernière intervention 6 juillet 2007
10 févr. 2004 à 17:24
Voici une solution: pour Placer la souris aux coordonées désirées, faire apparaitre, faire disparaitre, capter l'interruption, contrôler si la souris est dans le cadre( limities) désirés et ou au besoin faire les contrôles necessaires, si l'utilsateur a fait un clic avec le bouton droit ou gauche.
Pour les utilisations voir dans les progs au:
http://www.cppfrance.com/listeauteur2.aspx?ID=8416

void movetoxy(int x, int y)
{
union REGS regs;
regs.h.ah = 2; /* set cursor position */
regs.h.dh = y;
regs.h.dl = x;
regs.h.bh = 0; /* video page 0 */
int86(VIDEO, ®s, ®s);
}

void initialisersouris(int *ok,int *nbouton)
{
union REGS rin,rout;
rin.x.ax=0;
int86(0x33,&rin,&rout);
*ok=rout.x.ax;
*nbouton=rout.x.bx;
return;
}


void sourison()
{
union REGS rin,rout;
rin.x.ax=1;
int86(0x33,&rin,&rout);
return;
}

void sourisoff()
{
union REGS rin,rout;
rin.x.ax=0;
int86(0x33,&rin,&rout);
return;
}

void getsourisxy(int *xs,int *ys,int *bg,int *bd)
{
union REGS rin,rout;
rin.x.ax=3;
int86(0x33,&rin,&rout);
*xs=rout.x.cx;
*ys=rout.x.dx;
*bg=(rout.x.bx & 1)==1;
*bd=(rout.x.bx & 2)==2;
return;
}

void setsouris(int x,int y)
{
union REGS rin,rout;
rin.x.ax=4;
rin.x.cx=x;
rin.x.dx=y;
int86(0x33,&rin,&rout);
return;
}

int souris_inte(int a,int b,int c,int d)
{
int xs,ys,bd,bg;
getsourisxy(&xs,&ys,&bg,&bd);
if((a<=xs)&&(b<=ys)&&(c>=xs)&&(d>=ys))
return 1;
else
return 0;
}

int souris_ext(int a,int b,int c,int d)
{
int xs,ys,bd,bg;
getsourisxy(&xs,&ys,&bg,&bd);
if((xs<=a)||(ys<=b)||(xs>=c)||(ys>=d))
return 1;
else
return 0;
}
eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022
14 déc. 2003 à 16:55
Pour ceux qui ont le meme probleme, voici la solution :

http://www.cppfrance.com/code.aspx?ID=17856

Vous y toruverez une librairie avec quelque fonction en assembleur qui permet de resoudre le probléme de "limites" que j'ai rencontré pour programmer un casse-briques. Voila !

++
eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022
9 nov. 2003 à 11:11
Salut ,

J'ai vu ton code pour la souris sur TC, qui est trés interessant d'ailleurs, et je me pose la question suivante :

Peut on modifier la valeur de _CX et _DX afin de replacer la souris à l'endroit que l'on veut ?

Je m'explique, je suis en train de programmer un casse brique et je me sert de ton code pour deplacer la raquette,
Cependant, les limites de ma table de jeux ne sont pas (0.0) / (640/480) mais (10,10) / (510/460), il faut donc,
Lorsque je me retrouve a l'exterieur de ces limites que je replace le curseur de la souris afin de ne pas attendre
Le retour du curseur par exemple.

Voila, en esperant une réponse !
@ micalement , Eddy
eldered Messages postés 232 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 mai 2022
25 août 2003 à 23:03
Oki merci, c super, j'en avais justement besoin !!! ++
Rejoignez-nous