0

I am doveloping a game brain champ. This is its version 3. In this version I want to use mouse in addition with keyboard for input. I have successfully tested its standalone keyboard version as well as mouse version. I have used int86() function for mouse with 0x33 interrupt number. Also I have used getch() function for keyboard input. But my main problem is I m not able to use mouse and keyboard simultaneously. As when I do so getch() holds the program and thus I can't get mouse input simultaneously. Please help me out. I am working on turbo c++ 3.0. I am an experienced programmer. Please give me sample code so that I can use it accordingly. Thanks in advance.

3
Contributors
8
Replies
34
Views
4 Years
Discussion Span
Last Post by sanyam.mishra
0

Before calling getch() find out if anything is in the keyboard buffer kbhit() from conio.h will tell you that. If nothing there then you can check for mouse input.

0

Thanks for your reply ancient dragon. I understand the whole concept but there is a small problem if I hit keyboard more than one time then getch() just take one input at one time. So buffer has input still after the call to getch(). How can I clear this buffer() after single call to getch(). Fflush(stdin) isn't working.

0

fflush is not supposed to work with stdin -- it's only for output streams like stdout. You can write your own fflush like this

void flushKeyboard()
{
   while( kbhit() )
       getch();
}
-1

U r such a beautiful dragon. Thank you so much. :-).
But as u knw problems never end for a programmer. There is another minor problem. Whenever I use clearviewport() to clear the screen the portion of screen beneath the mouse cursor remains there uncleared. What should I do to clear that portion.

0

helo sanyam.mishra this is header file *.h include most func you need with turbo C++
you must manipulate registry value with ("reg., init86().....") included from <dos.h>
If you need any help

E- mail: 51284191@orange.tn

#include <dos.h>
#include <stddef.h>


   typedef enum Boolean {false,true}boolean;
   union REGS reg;
   int etat();
   int X();
   int Y();
   void MouseInit();
   void MouseOn();
   void MouseOff();
   int Left();
   int Right();
   int MouseIn();
   void curseur(int x,int y);
   void MouseInit()
   {
      reg.x.ax=0x00;
      int86(0x33,®,®);
   }
   void MouseOn()
   {
     reg.x.ax=0x01;
     int86(0x33,®,®);
   }
   void MouseOff()
   {
      reg.x.ax=0x02;
      int86(0x33,®,®);
   }
   int X()
   {
      reg.x.ax=0x03;
      int86(0x33,®,®);
      return(reg.x.cx);
   }
   int Y()
   {
     reg.x.ax=0x03;
     int86(0x33,®,®);
     return(reg.x.dx);
   }
   int Left()
   {
      reg.x.ax=0x03;
      int86(0x33,®,®);
      return((reg.x.bx==1));
   }
   int Right()
   {
      reg.x.ax=03;
      int86(0x33,®,®);
      return((reg.x.bx==2));
   }
   int MouseIn(int x1,int x2,int y1,int y2)
   {
      reg.x.ax=0x03;
      int86(0x33,®,®);
      reg.x.bx=2;
      return ((X()>=x1)&(X()<=x2)&(Y()<=y2)&(Y()>=y1));
   }
   int etat(void)
   {
     reg.x.ax=0x03;
     int86(0x33,®,®);
     return(reg.x.bx);
   }
   ------
   void cursor_pointer(int x,int y)
{
while(!kbhit())
{
setcolor(0);
outtextxy(x,y,"_");
delay(150);
setcolor(9);
outtextxy(x,y,"_");
delay(150);
}
}

-------------//good luck//

0

Thanks paul but I had already figured this put. But anyway I will save this for my future reference. Thanks.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.