использование обработчика событий
Вопрос
есть ли способ использовать мышь в качестве обработчика событий в c / c ++ я студент, и у меня есть мини-проект, я создаю игру на snakes and ladder (знаменитая настольная игра) и пытаюсь создать ее с помощью базового компилятора borland c ++, работающего с заголовочным файлом graphics.h, который очень простой и выдает разрешение 640 X 480, поэтому мне было интересно, есть ли возможность использовать мышь в качестве обработчика событий (о чем у меня нет опыта), чтобы иметь контроль над монетами palyer на доске.
Я учусь на втором курсе инженерного факультета (отрасль компьютерных наук ) .
заранее спасибо за помощь!
Решение
Я не уверен, какая версия graphics.h у вас случайно есть, но есть функции getmousey
, getmousey
, clearmouseclick
и getmouseclick
. Видишь это для получения некоторой документации, которая может вам подойти.
Это успокаивает тем, что вы можете использовать registermousehandler
и функция обратного вызова для выполнения некоторого уровня программирования на основе событий.Вот образец из документа, который я вам отправил.
// The click_handler will be called whenever the left mouse button is
// clicked. It checks copies the x,y coordinates of the click to
// see if the click was on a red pixel. If so, then the boolean
// variable red_clicked is set to true. Note that in general
// all handlers should be quick. If they need to do more than a little
// work, they should set a variable that will trigger the work going,
// and then return.
bool red_clicked = false;
void click_handler(int x, int y)
{
if (getpixel(x,y) == RED)
red_clicked = true;
}
// Call this function to draw an isosoles triangle with the given base and
// height. The triangle will be drawn just above the botton of the screen.
void triangle(int base, int height)
{
int maxx = getmaxx( );
int maxy = getmaxy( );
line(maxx/2 - base/2, maxy - 10, maxx/2 + base/2, maxy - 10);
line(maxx/2 - base/2, maxy - 10, maxx/2, maxy - 10 - height);
line(maxx/2 + base/2, maxy - 10, maxx/2, maxy - 10 - height);
}
void main(void)
{
int maxx, maxy; // Maximum x and y pixel coordinates
int divisor; // Divisor for the length of a triangle side
// Put the machine into graphics mode and get the maximum coordinates:
initwindow(450, 300);
maxx = getmaxx( );
maxy = getmaxy( );
// Register the function that handles a left mouse click
registermousehandler(WM_LBUTTONDOWN, click_handler);
// Draw a white circle with red inside and a radius of 50 pixels:
setfillstyle(SOLID_FILL, RED);
setcolor(WHITE);
fillellipse(maxx/2, maxy/2, 50, 50);
// Print a message and wait for a red pixel to be double clicked:
settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
outtextxy(20, 20, "Left click in RED to end.");
setcolor(BLUE);
red_clicked = false;
divisor = 2;
while (!red_clicked)
{
triangle(maxx/divisor, maxy/divisor);
delay(500);
divisor++;
}
cout << "The mouse was clicked at: ";
cout << "x=" << mousex( );
cout << " y=" << mousey( ) << endl;
// Switch back to text mode:
closegraph( );
}
Другие советы
Вы можете использовать события мыши и клавиатуры с помощью программирования Win32 (в Visual Studio).
Является ли это обязательным требованием для использования borland c ++.
Я думаю, что подобные API есть в borland c ++.
Вы можете обратиться http://www.functionx.com/win32/index.htm для получения дополнительной информации об обработке событий в Visual Studio с использованием программирования Win32.