Minesweeper-1

扫雷应该是一个非常经典的游戏,不少人玩过(虽然我没玩过)。那这个专栏就一起来做一个。


新建项目

虽然说源代码可以在工具->编译选项->代码生成/优化->连接器里把不产生控制台改成Yes,但运行exe的时候还是会闪现黑框框。所以建议用Windows Application项目。

先新建一个项目

自己命名一下这个文件的名字~~~

这我已经把他的代码删了,自己可以留着,反正就是个winmain框架。

下面开始Coding~

这次先写难度选择。

代码
#include <windows.h>

LRESULT CALLBACK WndProc_main(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam){
	switch(Msg)
	{
        case WM_DESTROY: {
      		PostQuitMessage(0);
      		return 0;
      	}
        default:return DefWindowProc(hWnd,Msg,wParam,lParam);
   }
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){
	WNDCLASSEX wcex;
	memset(&wcex,0,sizeof(wcex));
	wcex.cbSize=sizeof(wcex);
	wcex.lpfnWndProc=WndProc_main;
	wcex.hInstance=hInstance;
	wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
	wcex.style=CS_DBLCLKS|CS_SAVEBITS|CS_GLOBALCLASS;
	wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszClassName="WindowClass";
	wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wcex.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
	if (!RegisterClassEx(&wcex)) {
		MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}
	HWND hWnd = CreateWindowExA(WS_EX_ACCEPTFILES,"WindowClass", "Minesweeper",
  		WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		310,
		150,
		NULL, NULL, hInstance, NULL);
	if(!hWnd){
		MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}
	ShowWindow(hWnd,nShowCmd);
	UpdateWindow(hWnd);
	MSG msg={};
	while (GetMessage(&msg, NULL, 0, 0) > 0) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}
#else

然后运行会有一个小白窗口,名字是Minesweeper(用中文会很美妙)。

往ShowWindow(hWnd,nShowCmd)前头加上Edit的代码:

CreateWindow("Button", "Easy", WS_VISIBLE | WS_CHILD, 25, 55, 80, 32, hWnd, (HMENU)1, NULL, NULL);
CreateWindow("Button", "Middle", WS_VISIBLE | WS_CHILD, 115, 55, 80, 32, hWnd, (HMENU)2, NULL, NULL);
CreateWindow("Button", "Hard", WS_VISIBLE | WS_CHILD, 205, 55, 80, 32, hWnd, (HMENU)3, NULL, NULL);

大小、编号可以自己调,不过改大小要记得窗口大小也要变(不然窗口不美观)。

让后是美妙的窗口过程函数时刻:

case WM_PAINT: {
	hdc = BeginPaint(hWnd, &ps);
	TextOut(hdc, 111, 25, "Minesweeper", lstrlen("Minesweeper"));
	EndPaint(hWnd, &ps);
	break;
}

这一块是一个小小的文字标题(当然喽,位置可以自己改)。

运行一下:

那么别的部分就下篇再继续~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值