1. 程式人生 > >簡單的滑鼠操作<一個填充格子的小遊戲>

簡單的滑鼠操作<一個填充格子的小遊戲>

 1 #include "graphics.h"
 2 #include "conio.h"
 3 
 4 
 5 void main(){
 6     // 初始化介面
 7     initgraph(640, 480); 
 8 
 9     for (int x = 0; x < 451; x += 50){     // 畫 10 * 4 個50 * 50 的空白格子
10         for (int y = 0; y < 151; y += 50){
11             rectangle(x, y, x + 50, y + 50);
12         }
13     }
14
// 畫3個色板 15 setfillcolor(RED); 16 fillrectangle(100, 300, 150, 350); 17 setfillcolor(BLUE); 18 fillrectangle(200, 300, 250, 350); 19 setfillcolor(GREEN); 20 fillrectangle(300, 300, 350, 350); 21 22 MOUSEMSG m; 23 while (1){ 24 m = GetMouseMsg(); // 獲取滑鼠資訊 25 if (m.uMsg == WM_LBUTTONDOWN){ //
當滑鼠左鍵擊下 26 if (m.x > 100 && m.x < 150 && m.y > 300 && m.y < 350){ 27 setfillcolor(RED); 28 } 29 if (m.x > 200 && m.x < 250 && m.y > 300 && m.y < 350){ 30 setfillcolor(BLUE);
31 } 32 if (m.x > 300 && m.x < 350 && m.y > 300 && m.y < 350){ 33 setfillcolor(GREEN); 34 } 35 } 36 37 m = GetMouseMsg(); 38 39 M: if (m.uMsg == WM_RBUTTONDOWN){ // 獲取滑鼠右鍵的資訊 40 int i, j; 41 i = (int)(m.x / 50); 42 j = (int)(m.y / 50); 43 // 當滑鼠右鍵點選的位子不在方格內則重新獲取滑鼠資訊 44 if (i * 50 > 450 || j * 50 > 150){ 45 goto M; 46 } 47 // 畫滑鼠右鍵點選的格子變為相應的顏色 48 fillrectangle(i * 50, j * 50, i * 50 + 50, j * 50 + 50); 49 } 50 } 51 closegraph(); 52 }

// 滑鼠訊息的結構

struct MOUSEMSG
{
    UINT uMsg;      // 當前滑鼠訊息
    bool mkCtrl;    // Ctrl 鍵是否按下
    bool mkShift;   // Shift 鍵是否按下
    bool mkLButton; // 滑鼠左鍵是否按下
    bool mkMButton; // 滑鼠中鍵是否按下
    bool mkRButton; // 滑鼠右鍵是否按下
    int x;          // 當前滑鼠 x 座標
    int y;          // 當前滑鼠 y 座標
    int wheel;      // 滑鼠滾輪滾動值
};

其中,當前滑鼠訊息可能是以下值:
WM_MOUSEMOVE     滑鼠移動訊息
WM_MOUSEWHEEL    滑鼠滾輪撥動訊息
WM_LBUTTONDOWN   左鍵按下訊息
WM_LBUTTONUP     左鍵彈起訊息
WM_LBUTTONDBLCLK 左鍵雙擊訊息
WM_MBUTTONDOWN   中鍵按下訊息
WM_MBUTTONUP     中鍵彈起訊息
WM_MBUTTONDBLCLK 中鍵雙擊訊息
WM_RBUTTONDOWN   右鍵按下訊息
WM_RBUTTONUP     右鍵彈起訊息
WM_RBUTTONDBLCLK 右鍵雙擊訊息