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

📄 mine.cpp

📁 这是一个关于扫雷游戏的代码
💻 CPP
字号:
// Mine.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "Mine.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMineApp

BEGIN_MESSAGE_MAP(CMineApp, CWinApp)
	//{{AFX_MSG_MAP(CMineApp)
	//}}AFX_MSG	
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMineApp construction

CMineApp::CMineApp()
{
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CMineApp object

CMineApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CMineApp initialization

BOOL CMineApp::InitInstance()
{
	// Load string resources
	for(int i=0; i<STR_NUM; i++)
	{
		 ::LoadString(NULL,i,sResource[i],STR_BUF_MAX);
	}

#ifdef _AFXDLL
	Enable3dControls();			// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic();	// Call this when linking to MFC statically
#endif

    SetRegistryKey("LPQ_2004");
	LoadGameInfo(); 

	uSecends = 0;
	uRemainMines = uCustomMineNum;

	pWnd = new CMineWnd;	
	WNDCLASS wc;
    ZeroMemory(&wc, sizeof wc);
    wc.hInstance =   AfxGetInstanceHandle();
    wc.lpfnWndProc = ::DefWindowProc;
    wc.lpszClassName = gcszWndClass;
    wc.lpszMenuName  = MAKEINTRESOURCE(IDR_MENU);
    wc.hbrBackground = NULL;
    wc.hCursor       = ::LoadCursor(NULL, IDC_ARROW);
    wc.hIcon         = LoadIcon(MAKEINTRESOURCE(IDR_MAINFRAME));
    
	// Register the new class and exit if it fails
    if(!AfxRegisterClass(&wc))
    {
       AfxMessageBox(sResource[8]);
       return FALSE;
    }	

	UINT width = DEFAULT_FRAME_WIDTH + theApp.uCustomWidth*MINE_WIDTH + 
		LINE_WIDTH_0*3 + SIDE_WIDTH_0 + SIDE_WIDTH_1;
	UINT height = DEFAULT_FRAME_HEIGHT + theApp.uCustomHeight*MINE_HEIGHT +
		LINE_WIDTH_0*3 + SIDE_WIDTH_1 + SIDE_WIDTH_0*2 + RECT_HEIGHT_0;

	UINT uPosX = ::GetSystemMetrics(SM_CXSCREEN)/2 - width/2;
	UINT uPosY = ::GetSystemMetrics(SM_CYSCREEN)/2 - height/2;

	if( !pWnd->CreateEx( 0, gcszWndClass,sResource[5],
		WS_SYSMENU| WS_CAPTION |WS_MINIMIZEBOX,
		uPosX, uPosY, width, height,
		NULL, NULL) )
	{
		 AfxMessageBox(sResource[9]);
		 return FALSE;
	}
	m_pMainWnd = pWnd;

	RECT rect;
	pWnd->GetClientRect(&rect);
	uFrameWidth = width - rect.right;
	uFrameHeight = height - rect.bottom;
	pWnd->SetWindowSize();
		
	pWnd->ShowWindow(SW_SHOWNORMAL);

	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return TRUE;
}

int CMineApp::ExitInstance() 
{
	delete pWnd;
	SaveGameInfo();
	return CWinApp::ExitInstance();
}


BOOL CMineApp::LoadGameInfo()
{
	uGameLevel = GetProfileInt(gcszSetting,gcszGameLevel,LEVEL_PRIMARY);
	uCustomWidth = GetProfileInt(gcszSetting,gcszCustomWidth,PRIMARY_WIDTH);
	uCustomHeight = GetProfileInt(gcszSetting,gcszCustomHeight,PRIMARY_HEIGHT);
	uCustomMineNum = GetProfileInt(gcszSetting,gcszCustomMineNum,PRIMARY_MINE_NUM);
	bColor = GetProfileInt(gcszSetting,gcszColor,TRUE);
	bSound = GetProfileInt(gcszSetting,gcszSound,FALSE);
	bMarked = GetProfileInt(gcszSetting,gcszMarked,FALSE);
	uPrimaryRecord = GetProfileInt(gcszSetting,gcszPrimaryRecord,DEFAULT_RECORD);
	uSecondaryRecord = GetProfileInt(gcszSetting,gcszSecondaryRecord,DEFAULT_RECORD);
	uAdvancedRecord = GetProfileInt(gcszSetting,gcszAdvancedRecord,DEFAULT_RECORD);
	sPrimaryRecordHolder = GetProfileString(gcszSetting,gcszPrimaryRecordHolder,sResource[1]);
	sSecondaryRecordHolder = GetProfileString(gcszSetting,gcszSecondaryRecordHolder,sResource[1]);
	sAdvancedRecordHolder = GetProfileString(gcszSetting,gcszAdvancedRecordHolder,sResource[1]);
	    
	return TRUE;
}

BOOL CMineApp::SaveGameInfo()
{	
	WriteProfileInt(gcszSetting,gcszGameLevel,uGameLevel);
	WriteProfileInt(gcszSetting,gcszCustomWidth,uCustomWidth);
	WriteProfileInt(gcszSetting,gcszCustomHeight,uCustomHeight);
	WriteProfileInt(gcszSetting,gcszCustomMineNum,uCustomMineNum);
	WriteProfileInt(gcszSetting,gcszColor,bColor);
	WriteProfileInt(gcszSetting,gcszSound,bSound);
	WriteProfileInt(gcszSetting,gcszMarked,bMarked);
	WriteProfileInt(gcszSetting,gcszPrimaryRecord,uPrimaryRecord);
	WriteProfileInt(gcszSetting,gcszSecondaryRecord,uSecondaryRecord);
	WriteProfileInt(gcszSetting,gcszAdvancedRecord,uAdvancedRecord);
	WriteProfileString(gcszSetting,gcszPrimaryRecordHolder,sPrimaryRecordHolder);
	WriteProfileString(gcszSetting,gcszSecondaryRecordHolder,sSecondaryRecordHolder);
	WriteProfileString(gcszSetting,gcszAdvancedRecordHolder,sAdvancedRecordHolder);
		
	return TRUE;
}


⌨️ 快捷键说明

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