Pergunta

Existe uma maneira de rato uso como um manipulador de eventos em c / c ++ im um estudante e tem um mini-projeto para fazer, im fazer um jogo em cobras e escada (o famoso jogo de tabuleiro) e tentando fazê-lo com base Borland C ++ compilador trabalhando com um arquivo de cabeçalho chamado graphics.h, que é muito básico e dá saída de 640 x 480 res, então eu queria saber se existe uma possibilidade de usar o mouse como um manipulador de eventos (sobre o qual eu não tenho experiance) ter controle sobre as moedas palyer no tabuleiro.

Estou no segundo ano de engenharia (informática ramo)

thx antecipadamente pela ajuda!

Foi útil?

Solução

Eu não tenho certeza qual versão do graphics.h acontecer de você ter, mas há funções getmousey, getmousey, clearmouseclick e getmouseclick. Veja este por alguma documentação que possa trabalhar para você.

É appeas que você pode usar registermousehandler e uma função de chamada de retorno para fazer algum nível de programação baseada em eventos. Aqui está uma amostra do documento que lhe enviei.

// 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( );
}

Outras dicas

Você pode usar mouse e teclado eventos usando Win32 de programação (em Visual Studio).

É a exigência de uso Borland C ++.

Eu acho APIs semelhantes existem em Borland C ++.

Você pode consultar http://www.functionx.com/win32/index.htm para mais informações sobre o tratamento de eventos no Visual Studio usando Win32 programação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top