⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monkey24.cpp

📁 简易扫雷
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "Monkey24.h"
////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, 
						  WPARAM wParam, LPARAM lParam);
/////////////////////////////////////////////////////////////////
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[] = TEXT("Monkey2004");
    HWND         hwnd;
    MSG          msg ;
    WNDCLASS     wndclass ;

	///////////////////注册窗口类////////////////////////
    wndclass.style         = CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
    wndclass.lpfnWndProc   = WndProc;
    wndclass.cbClsExtra    = 0;
    wndclass.cbWndExtra    = 0;
    wndclass.hInstance     = hInstance;
    wndclass.hIcon         = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_ICONMAIN)) ;
    wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;//(HBRUSH) GetSysColorBrush(COLOR_BTNFACE);
    wndclass.lpszMenuName  = NULL ;
    wndclass.lpszClassName = szAppName ;
    g_hinst=hInstance;
    if (!RegisterClass (&wndclass))
    {
         MessageBox (NULL, TEXT("This program requires Windows NT!"),
                     szAppName, MB_ICONERROR) ;
         return 0 ;
    }
	//建立窗口
	hwnd = CreateWindow (szAppName, TEXT ("Monkey Year 2004 - Wuzg"), 
							WS_BORDER|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX, 
							CW_USEDEFAULT,CW_USEDEFAULT,
							20, 
							20,
							NULL,
							(HMENU)LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1)),
							hInstance, NULL);
    
     ShowWindow (hwnd, iCmdShow);
     UpdateWindow (hwnd);
	 
     while (GetMessage (&msg, NULL, 0, 0))
     {
         TranslateMessage (&msg) ;
         DispatchMessage  (&msg) ;
     }
	 WriteGameSetting();
	 return msg.wParam ;
}
void InitAllBombInfo(int nType)
{
	FreeBombInfoMatrix();
	switch(nType)
	 {
	 case TYPE_BEGINNER:
		 g_nBlockCX=MAXCOUNTX;
		 g_nBlockCY=MAXCOUNTY;
		 g_nBombCount=MAXBOMBCOUNT;
		 break;
	 case TYPE_MIDDLE:
		 g_nBlockCX=MMAXCOUNTX;
		 g_nBlockCY=MMAXCOUNTY;
		 g_nBombCount=MMAXBOMBCOUNT;
		 break;
	 case TYPE_MASTER:
		 g_nBlockCX=HMAXCOUNTX;
		 g_nBlockCY=HMAXCOUNTY;
		 g_nBombCount=HMAXBOMBCOUNT;
		 break;
	 }
	 AllocBombInfoMatrix();
	 InitBombInfoMatrix();
	 nMarkedCount=0;
	 nRightMarkedCount=0;
	 g_bPlaying=TRUE;
	 g_nTimecount=0;

	 rcMap.left=MAPINITX;
	 rcMap.top=MAPINITY;
	 rcMap.right=MAPINITX+BLOCKBMPCX*g_nBlockCX;
	 rcMap.bottom=MAPINITY+BLOCKBMPCY*g_nBlockCY;
}
//////////////////////////////////////////////////////
BOOL CALLBACK UserDlgProc (HWND hDlg, UINT message, 
                            WPARAM wParam, LPARAM lParam)

{
	 int tempW,tempH,tempBomb;
     switch (message)
     {
     case WM_INITDIALOG :
		  SetDlgItemInt(hDlg,IDC_EDITW,g_nBlockCX,FALSE);
		  SetDlgItemInt(hDlg,IDC_EDITH,g_nBlockCY,FALSE);
		  SetDlgItemInt(hDlg,IDC_EDITBOMB,g_nBombCount,FALSE);
          return FALSE ;
          
     case WM_COMMAND :
          switch (LOWORD (wParam))
          {
          case IDOK :
			   tempW=min(36,max(2,GetDlgItemInt(hDlg,IDC_EDITW,NULL,FALSE)));
			   tempH=min(36,max(2,GetDlgItemInt(hDlg,IDC_EDITH,NULL,FALSE)));
			   tempBomb=GetDlgItemInt(hDlg,IDC_EDITBOMB,NULL,FALSE);
			   if((tempBomb>=tempW*tempH)||(tempBomb<=0))
					tempBomb=max(1,(int)((tempW*tempH)/2));
			   g_nBlockCX=tempW;
			   g_nBlockCY=tempH;
			   g_nBombCount=tempBomb;
               EndDialog (hDlg, 0) ;
               return TRUE ;
		  case IDCANCEL:
				EndDialog (hDlg, 1) ;
				return TRUE;
          }
          break ;
     }
     return FALSE ;
}
//////////////////////////////////////////////////////
BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message, 
                            WPARAM wParam, LPARAM lParam)

{
     switch (message)
     {
     case WM_INITDIALOG :
          return FALSE ;
          
     case WM_COMMAND :
          switch (LOWORD (wParam))
          {
          case IDOK :
               EndDialog (hDlg, 0) ;
               return TRUE ;
		  case IDCANCEL:
				EndDialog (hDlg, 1) ;
				return TRUE;
          }
          break ;
     }
     return FALSE ;
}
//////////////////////////////////////////////////////
BOOL CALLBACK ScoreDlgProc (HWND hDlg, UINT message, 
                            WPARAM wParam, LPARAM lParam)

{
	int score1,score2,score3;
	TCHAR name1[20],name2[20],name3[20];
	TCHAR szBuf[10];
     switch (message)
     {
     case WM_INITDIALOG :
		  score1=GetPrivateProfileInt(TEXT("SCORE"),TEXT("Score1"),999,szProfilePath);
		  score2=GetPrivateProfileInt(TEXT("SCORE"),TEXT("Score2"),999,szProfilePath);
		  score3=GetPrivateProfileInt(TEXT("SCORE"),TEXT("Score3"),999,szProfilePath);
		  GetPrivateProfileString(TEXT("SCORE"),TEXT("Name1"),TEXT("佚名"),name1,20,szProfilePath);
		  GetPrivateProfileString(TEXT("SCORE"),TEXT("Name2"),TEXT("佚名"),name2,20,szProfilePath);
		  GetPrivateProfileString(TEXT("SCORE"),TEXT("Name3"),TEXT("佚名"),name3,20,szProfilePath);
		  
		  wsprintf(szBuf,TEXT("%d 秒"),score1);
		  SetDlgItemText(hDlg,IDC_SSCORE1,szBuf);
		  wsprintf(szBuf,TEXT("%d 秒"),score2);
		  SetDlgItemText(hDlg,IDC_SSCORE2,szBuf);
		  wsprintf(szBuf,TEXT("%d 秒"),score3);
		  SetDlgItemText(hDlg,IDC_SSCORE3,szBuf);

		  SetDlgItemText(hDlg,IDC_SNAME1,name1);
		  SetDlgItemText(hDlg,IDC_SNAME2,name2);
		  SetDlgItemText(hDlg,IDC_SNAME3,name3);
		  return FALSE ;
          
     case WM_COMMAND :
          switch (LOWORD (wParam))
          {
          case IDOK :
               EndDialog (hDlg, 0) ;
               return TRUE ;
		  case IDCANCEL:
				EndDialog (hDlg, 1) ;
				return TRUE;
		  case IDC_BTNCLEAR:
			    WritePrivateProfileString(TEXT("SCORE"),TEXT("Score1"),TEXT("999"),szProfilePath);
			    WritePrivateProfileString(TEXT("SCORE"),TEXT("Name1"),TEXT("佚名"),szProfilePath);			    
				WritePrivateProfileString(TEXT("SCORE"),TEXT("Score2"),TEXT("999"),szProfilePath);
			    WritePrivateProfileString(TEXT("SCORE"),TEXT("Name2"),TEXT("佚名"),szProfilePath);
			    WritePrivateProfileString(TEXT("SCORE"),TEXT("Score3"),TEXT("999"),szProfilePath);
			    WritePrivateProfileString(TEXT("SCORE"),TEXT("Name3"),TEXT("佚名"),szProfilePath);			  			  
				EndDialog (hDlg, 1) ;
				return TRUE;
          }
          break ;
     }
     return FALSE ;
}
//////////////////////////////////////////////////////
BOOL CALLBACK NameDlgProc (HWND hDlg, UINT message, 
                            WPARAM wParam, LPARAM lParam)

{
	TCHAR szName[20],szScore[10];
     switch (message)
     {
     case WM_INITDIALOG :
		  if(g_nGameLev==TYPE_BEGINNER)
			  SetDlgItemText(hDlg,IDC_NTYPE,TEXT("已破初级记录。"));
		  else if(g_nGameLev==TYPE_MIDDLE)
			  SetDlgItemText(hDlg,IDC_NTYPE,TEXT("已破中级记录。"));
		  else if(g_nGameLev==TYPE_MASTER)
			  SetDlgItemText(hDlg,IDC_NTYPE,TEXT("已破高级记录。"));
		  SetDlgItemText(hDlg,IDC_EDITNAME,TEXT("佚名"));
		  SetFocus(GetDlgItem(hDlg,IDC_EDITNAME));
          return FALSE ;
          
     case WM_COMMAND :
          switch (LOWORD (wParam))
          {
          case IDOK :
			   GetDlgItemText(hDlg,IDC_EDITNAME,szName,20);
			   wsprintf(szScore,TEXT("%d"),g_nTimecount);
				if(g_nGameLev==TYPE_BEGINNER)
				{
					WritePrivateProfileString(TEXT("SCORE"),TEXT("Score1"),szScore,szProfilePath);
					WritePrivateProfileString(TEXT("SCORE"),TEXT("Name1"),szName,szProfilePath);
				}
				else if(g_nGameLev==TYPE_MIDDLE)
				{
					WritePrivateProfileString(TEXT("SCORE"),TEXT("Score2"),szScore,szProfilePath);
					WritePrivateProfileString(TEXT("SCORE"),TEXT("Name2"),szName,szProfilePath);					
				}
				else if(g_nGameLev==TYPE_MASTER)
				{
					WritePrivateProfileString(TEXT("SCORE"),TEXT("Score3"),szScore,szProfilePath);
					WritePrivateProfileString(TEXT("SCORE"),TEXT("Name3"),szName,szProfilePath);					
				}
               EndDialog (hDlg, 0) ;
               return TRUE ;
          }
          break ;
     }
     return FALSE ;
}
///////////////////////////////////////////////////////
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, 
						  WPARAM wParam, LPARAM lParam)
{
     HDC             hdc,hdc1;
     PAINTSTRUCT     ps;
     static HMENU hMenu ;
	 POINT  upPt,downPt;
	 static int nFaceType;
	 static BOOL bCap;
	 int hScore;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -