2009-01-29 12 views
1

est-il un moyen d'utiliser la souris comme un gestionnaire d'événements dans c/C++ im un étudiant et a obtenu un mini projet à faire, im faire un jeu sur les serpents et l'échelle (le célèbre jeu de plateau) et essayer de faire avec le compilateur de base de C++ borland fonctionnant avec un fichier d'en-tête appelé graphics.h, qui est très basique et donne une sortie de 640 X 480 res, donc je me demandais s'il est possible d'utiliser la souris comme gestionnaire d'événements pas d'expérience) pour avoir le contrôle sur les pièces palyer sur le tableau.utilisant gestionnaire d'événements

Je suis ingénieur en deuxième année (branche informatique)

thx à l'avance pour l'aide!

Répondre

0

Je ne suis pas sûr de la version de graphics.h vous arrive d'avoir, mais il y a des fonctions getmousey, getmousey, clearmouseclick et getmouseclick. See this pour une documentation qui peut fonctionner pour vous.

Il apparaît que vous pouvez utiliser registermousehandler et une fonction de rappel pour effectuer un certain niveau de programmation basée sur les événements. Voici un exemple du document que je vous ai envoyé.

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

je ne suis pas sûr de la version de graphics.h j'utilise, mais sont thre ces fuctions getmousey définis dans le fichier d'en-tête, et que fait-il? –

+0

thx pour votre aide, je suppose que cela sera utile. –

0

Vous pouvez utiliser des événements de souris et de clavier à l'aide de la programmation Win32 (dans Visual Studio).

Est-ce l'exigence d'utiliser borland C++.

Je pense que des API similaires sont présentes dans borland C++.

Vous pouvez vous reporter à http://www.functionx.com/win32/index.htm pour plus d'informations sur la gestion des événements dans Visual Studio à l'aide de la programmation Win32.

+0

oui je suis limité à utiliser borland compilateur C++ –