資源簡介
經典掃雷程序源碼,已實現基本的掃雷方塊的展開,方塊周圍雷數的計算,方塊的標旗,勝負的判斷,難度的更改。
代碼片段和文件信息
/*
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? {
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??掃雷\掃雷\Debug\ClearMines.obj
?????文件???????84228??2018-04-30?14:43??掃雷\掃雷\Debug\Resource.res
?????文件??????379904??2018-04-30?14:44??掃雷\掃雷\Debug\vc140.idb
?????文件??????102400??2018-04-30?14:44??掃雷\掃雷\Debug\vc140.pdb
?????文件???????32295??2018-04-30?14:44??掃雷\掃雷\Debug\WinMain.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\掃雷.tlog\CL.command.1.tlog
?????文件???????40154??2018-04-30?14:44??掃雷\掃雷\Debug\掃雷.tlog\CL.read.1.tlog
?????文件????????1062??2018-04-30?14:44??掃雷\掃雷\Debug\掃雷.tlog\CL.write.1.tlog
?????文件????????1070??2018-04-30?14:44??掃雷\掃雷\Debug\掃雷.tlog\li
?????文件????????2694??2018-04-30?14:44??掃雷\掃雷\Debug\掃雷.tlog\li
?????文件?????????356??2018-04-30?14:44??掃雷\掃雷\Debug\掃雷.tlog\li
?????文件?????????276??2018-04-30?14:43??掃雷\掃雷\Debug\掃雷.tlog\rc.command.1.tlog
?????文件????????3366??2018-04-30?14:43??掃雷\掃雷\Debug\掃雷.tlog\rc.read.1.tlog
?????文件?????????154??2018-04-30?14:43??掃雷\掃雷\Debug\掃雷.tlog\rc.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??掃雷\掃雷\Image\bomb.bmp
?????文件????????1254??2018-04-29?12:01??掃雷\掃雷\Image\bomb0.bmp
?????文件????????1254??2018-04-29?12:01??掃雷\掃雷\Image\flag.bmp
............此處省略22個文件信息
評論
共有 條評論