菜鸟问题 扫雷游戏? 400 报错
我希望 按下按钮的时候 用个一矩形 把这个按钮给铺上 我确实 给铺上了 但是 当我在按别的按钮的时候 原先铺上的矩形又变成按钮了 我百思不得其解 请哪位大牛 帮着 解决一下 求救!!!!!!!
#include<windows.h>
#include<time.h>
//----------------雷和按钮的节点------------------------------
typedef struct Node
{
int x;
int y;
}Node;
//----------------定义全局变量---------------------------
const int buttonNumber=20; //每行每列按钮的数目
const int buttonLenght=30; //按钮的长宽高
Node Lei[400];
Node button[buttonNumber][buttonNumber];
int leiCount=0; //雷的个数
int buttonCount=0;
HDC hdc;
HWND hwnd;
HINSTANCE hInst;
PAINTSTRUCT ps;
//----------------扫雷 函数声明-----------------------------
//埋雷地点是否重复
int chongfu(int i)
{
for(int j=0;j<leiCount;j++)
{
if(j==i)
{
continue;
}
else
{
if((Lei[i].x==Lei[j].x)&&(Lei[i].y==Lei[i].y))
{
return TRUE;
}
}
}
return FALSE;
}
//初始化游戏 即 埋雷 画地图
void InitGame()
{
int count=40; //把雷都确定
srand((unsigned)time(NULL));
for(int i=0;i<count;i++)
{
Lei[i].x=rand()%20*buttonLenght;
Lei[i].y=rand()%20*buttonLenght;
leiCount++;
//while(chongfu(i)) //记着要检查 雷是否有重复的 ( 注意!!!!!!!!! ) 都弄完了 在写
//{
// Lei[i].x=rand()%20*buttonLenght;
// Lei[i].y=rand()%20*buttonLenght;
//}
}
hdc=GetDC(hwnd); //把按钮都弄上去
for(int n=0;n<buttonNumber;n++)
{
for(int m=0;m<buttonNumber;m++)
{
button[n][m].x=n*buttonLenght;
button[n][m].y=m*buttonLenght;
CreateWindow("button","",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,button[n][m].x,button[n][m].y,buttonLenght,buttonLenght,hwnd,(HMENU)buttonCount,hInst,NULL);
buttonCount++;
}
}
}
//点击按钮的反应
void dianji(WPARAM wParam)
{
int x=wParam/20*30;
int y=wParam%20*30;
Rectangle(hdc,x,y,x+buttonLenght,y+buttonLenght); //用个矩形 把按钮铺上
}
//雷炸掉了
void bomb();
//应用程序窗口主体函数
char className[20]="windowsMode";
LRESULT CALLBACK wndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASSEX wndClass;
HWND hWnd;
MSG msg;
hInst=hInstance;
wndClass.cbClsExtra=0;
wndClass.cbSize=sizeof(WNDCLASSEX);
wndClass.cbWndExtra=0;
wndClass.hbrBackground=(HBRUSH)COLOR_WINDOW;
wndClass.hCursor=NULL;
wndClass.hIcon=NULL;
wndClass.hIconSm=NULL;
wndClass.hInstance=hInstance;
wndClass.lpfnWndProc=wndProc;
wndClass.lpszClassName=className;
wndClass.lpszMenuName=NULL;
wndClass.style=CS_VREDRAW|CS_HREDRAW;
RegisterClassEx(&wndClass);
hWnd=CreateWindow(className,"新窗口",WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_SYSMENU,400,100,600,600,NULL,NULL,hInstance,NULL);
hwnd=hWnd;
if(!hWnd)
{
MessageBox(hWnd,"创建窗口失败!","提示",MB_OK);
}
else
{
ShowWindow(hWnd,nShowCmd);
}
//===========游戏初始化区域============
InitGame();
//===========消息循环==================
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK wndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
dianji(wParam); //用个矩形 给按钮 铺上 但是 卧铺上了之后 再按一个别的按钮 原先 铺的 就消失了 请哪位 大牛 帮着弄弄啊 就是让我原先按下的按钮不消失 求解!!!
break;
}
return DefWindowProc(hWnd,message,wParam,lParam);
}
CreateWindow("button","",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON| BS_OWNERDRAW,button[n][m].x,button[n][m].y,buttonLenght,buttonLenght,hwnd,(HMENU)buttonCount,hInst,NULL);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。