简单的鼠标操作<一个填充格子的小游戏>

时间:2023-03-10 03:48:36
简单的鼠标操作<一个填充格子的小游戏>
 #include "graphics.h"
#include "conio.h" void main(){
// 初始化界面
initgraph(, ); for (int x = ; x < ; x += ){ // 画 10 * 4 个50 * 50 的空白格子
for (int y = ; y < ; y += ){
rectangle(x, y, x + , y + );
}
}
// 画3个色板
setfillcolor(RED);
fillrectangle(, , , );
setfillcolor(BLUE);
fillrectangle(, , , );
setfillcolor(GREEN);
fillrectangle(, , , ); MOUSEMSG m;
while (){
m = GetMouseMsg(); // 获取鼠标信息
if (m.uMsg == WM_LBUTTONDOWN){ // 当鼠标左键击下
if (m.x > && m.x < && m.y > && m.y < ){
setfillcolor(RED);
}
if (m.x > && m.x < && m.y > && m.y < ){
setfillcolor(BLUE);
}
if (m.x > && m.x < && m.y > && m.y < ){
setfillcolor(GREEN);
}
} m = GetMouseMsg(); M: if (m.uMsg == WM_RBUTTONDOWN){ // 获取鼠标右键的信息
int i, j;
i = (int)(m.x / );
j = (int)(m.y / );
// 当鼠标右键点击的位子不在方格内则重新获取鼠标信息
if (i * > || j * > ){
goto M;
}
// 画鼠标右键点击的格子变为相应的颜色
fillrectangle(i * , j * , i * + , j * + );
}
}
closegraph();
}

// 鼠标消息的结构

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 右键双击消息