簡單的滑鼠操作<一個填充格子的小遊戲>
阿新 • • 發佈:2018-11-10
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 右鍵雙擊訊息