扫雷-源文件


经典扫雷程序源码,已实现基本的扫雷方块的展开,方块周围雷数的计算,方块的标旗,胜负的判断,难度的更改。
资源截图
代码片段和文件信息
/*
easy: 8*8 10 mines
mid: 16*16 40 mines
hard:32*16 99 mines
*/
#include“resource.h“

//回调函数,windows自己调用
LRESULT CALLBACK WndProc(HWND UINT WPARAM LPARAM);

int WINAPI WinMain(HINSTANCE hInstance HINSTANCE hPreInstance PSTR szCmdLine int iCmdShow)
{
static TCHAR szAppName[] = TEXT(“MyWindows“);
HWND hwnd; //句柄
MSG msg; //消息
WNDCLASS wndClass; //窗口类
//设置窗口类的各项数据
wndClass.style = CS_HREDRAW | CS_VREDRAW; //调整窗口大小时是否重绘
wndClass.lpfnWndProc = WndProc; //回调函数
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance; //实例句柄
wndClass.hIcon = LoadIcon(hInstance IDP_ICON); //图标
wndClass.hCursor = LoadCursor(NULL IDC_ARROW); //光标
wndClass.hbrBackground = (HBRUSH)GetStockobject(WHITE_BRUSH);
wndClass.lpszMenuName = IDM_MENU;
wndClass.lpszClassName = szAppName;
//注册该窗口类
if (!RegisterClass(&wndClass))
{
MessageBox(NULL TEXT(“这个程序需要在windowsNT才能执行!“) szAppName MB_IConerror);
return 0;
}
//设置窗口具体特征(分化)
hwnd = CreateWindow(szAppName TEXT(“windows程序设计“) WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
200 100 (difficulty + 1) * BRICK (difficulty + 3) * BRICK
NULL NULL hInstance NULL);

ShowWindow(hwnd iCmdShow);
UpdateWindow(hwnd);
//消息循环,windows核心
while (GetMessage(&msg NULL 0 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg); //调用窗口过程函数(回调函数)
}

return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd UINT message WPARAM wParam LPARAM lParam)
{
HDC hdc hdcMem;
int wmId wmEvent i j;
//菜单项句柄
static HWND hMenu hGame;

//雷区
static int *mineField;
static POINT firstMine; //雷区起点
//位图句柄
static HBITMAP hPicture[14] hBitmap;
BITMAP bitmap;
static HWND *hStatic;


switch (message)
{
case WM_CREATE:
hMenu = GetMenu(hwnd);
hGame = GetSubMenu(hMenu 0);
for (i = 0; i < 14; ++i)
{
j = i + IDP_P0;
hPicture[i] = LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance MAKEINTRESOURCE(j));
}
CheckMenuRadioItem(hGame IDM_GAME_ESAY IDM_GAME_MIND IDM_GAME_ESAY MF_BYCOMMAND);
case WM_USER:
firstMine.x = 0;
firstMine.y = 0;
//加载雷区
if (mineField)
{
free(mineField);
}
mineField = (int*)calloc(difficulty * difficulty sizeof(int));
SetMineField(mineField);
//加载静态类控件
if (hStatic)
{
free(hStatic);
}
hStatic = (HWND*)calloc(difficulty * difficultysizeof(HWND));
for (i = 0; i < difficulty*difficulty; ++i)
{
hStatic[i] = CreateWindow(TEXT(“static“) NULL WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_NOTIFY
(i / difficulty)*BRICK (i % difficulty)*BRICK BRICK BRICK
hwnd (HMENU)i NULL NULL);
SendMessage(hStatic[i] STM_SETIMAGE IMAGE_BITMAP hPicture[13]);
}

flags = mines;
allMine = difficulty * difficulty;
return 0;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDM_GAME_NEW:
DestroyAllWindow(hStatic);

MoveWindow(hwnd 20

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-04-28 22:13  扫雷.vs
     目录           0  2018-04-28 22:13  扫雷.vs扫雷
     目录           0  2018-04-28 22:13  扫雷.vs扫雷v14
     文件       36864  2018-05-01 10:27  扫雷.vs扫雷v14.suo
     目录           0  2018-05-01 10:17  扫雷Debug
     文件        1300  2018-04-28 22:13  扫雷扫雷.sln
     文件    36679680  2018-05-01 10:27  扫雷扫雷.VC.db
     目录           0  2018-04-30 14:44  扫雷扫雷
     目录           0  2018-04-30 14:43  扫雷扫雷Debug
     文件       18820  2018-04-29 21:13  扫雷扫雷DebugClearMines.obj
     文件       84228  2018-04-30 14:43  扫雷扫雷DebugResource.res
     文件      379904  2018-04-30 14:44  扫雷扫雷Debugvc140.idb
     文件      102400  2018-04-30 14:44  扫雷扫雷Debugvc140.pdb
     文件       32295  2018-04-30 14:44  扫雷扫雷DebugWinMain.obj
     文件         941  2018-04-29 15:59  扫雷扫雷Debug扫雷.Build.CppClean.log
     文件        3543  2018-04-30 14:44  扫雷扫雷Debug扫雷.log
     目录           0  2018-04-30 14:44  扫雷扫雷Debug扫雷.tlog
     文件        1018  2018-04-30 14:44  扫雷扫雷Debug扫雷.tlogCL.command.1.tlog
     文件       40154  2018-04-30 14:44  扫雷扫雷Debug扫雷.tlogCL.read.1.tlog
     文件        1062  2018-04-30 14:44  扫雷扫雷Debug扫雷.tlogCL.write.1.tlog
     文件        1070  2018-04-30 14:44  扫雷扫雷Debug扫雷.tloglink.command.1.tlog
     文件        2694  2018-04-30 14:44  扫雷扫雷Debug扫雷.tloglink.read.1.tlog
     文件         356  2018-04-30 14:44  扫雷扫雷Debug扫雷.tloglink.write.1.tlog
     文件         276  2018-04-30 14:43  扫雷扫雷Debug扫雷.tlog
c.command.1.tlog
     文件        3366  2018-04-30 14:43  扫雷扫雷Debug扫雷.tlog
c.read.1.tlog
     文件         154  2018-04-30 14:43  扫雷扫雷Debug扫雷.tlog
c.write.1.tlog
     文件         188  2018-04-30 14:44  扫雷扫雷Debug扫雷.tlog扫雷.lastbuildstate
     目录           0  2018-04-30 14:41  扫雷扫雷Image
     文件        1254  2018-04-29 12:00  扫雷扫雷Imageomb.bmp
     文件        1254  2018-04-29 12:01  扫雷扫雷Imageomb0.bmp
     文件        1254  2018-04-29 12:01  扫雷扫雷Imageflag.bmp
............此处省略22个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)