亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? childview.cpp

?? Windows CE上的掃雷小游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// ChildView.cpp : implementation of the CChildView class
//

#include "stdafx.h"
#include "WinMine.h"
#include "ChildView.h"
#include "CustomDlg.h"
#include "WinDlg.h"
#include "RecordDlg.h"

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

enum { MINE = 10, CROSS, EXPLODE, MARK, FLAG, NONE };
enum { PRESSED, WIN, ANGRY, SURPRISE, SMILE };
enum { BASIC, INTERMEDIATE, EXPERT, CUSTOM };
int xmove[] = { -1, 0, 1, -1, 1, -1, 0, 1 };
int ymove[] = { -1, -1, -1, 0, 0, 1, 1, 1 };
TCHAR szSection[] = L"szSection";

/////////////////////////////////////////////////////////////////////////////
// CChildView

CChildView::CChildView()
{
	srand( GetTickCount() );
	
	m_bmCells.LoadBitmap( IDB_CELLS );
	m_bmFaces.LoadBitmap( IDB_FACES );
	m_bmNumber.LoadBitmap( IDB_NUM );

	m_height = 20 ;/* AfxGetApp()->GetProfileInt( szSection, "height", 8 );*/
	m_width =  20 ;/*AfxGetApp()->GetProfileInt( szSection, "width", 8 );*/
	m_nMines = 45 ;/*AfxGetApp()->GetProfileInt( szSection, "mines", 10 );*/
	m_level = 1;
//	m_level = AfxGetApp()->GetProfileInt( szSection, "Difficulty", 0 );
//	if( m_level >= 3 )		// customize
//	{
//		m_height = AfxGetApp()->GetProfileInt( szSection, "height", 8 );
//		m_width = AfxGetApp()->GetProfileInt( szSection, "width", 8 );
//		m_nMines = AfxGetApp()->GetProfileInt( szSection, "mines", 10 );
//	}
//	m_bMark = AfxGetApp()->GetProfileInt( szSection, "Mark", 1 );
//	for( int i = 0; i < 3; i ++ )
//	{
//		CString strEntry;
//		strEntry.Format( "Time%d", i + 1 );
//		m_recordTime[i] = AfxGetApp()->GetProfileInt( szSection, strEntry, 999 );
//		strEntry.Format( "Name%d", i + 1 );
//		m_recordName[i] = AfxGetApp()->GetProfileString( szSection, strEntry, "匿名" );
//	}

}


CChildView::~CChildView()
{
//	AfxGetApp()->WriteProfileInt( szSection, "Difficulty", m_level );
//	AfxGetApp()->WriteProfileInt( szSection, "Height", m_height );
//	AfxGetApp()->WriteProfileInt( szSection, "Width", m_width );
//	AfxGetApp()->WriteProfileInt( szSection, "Mines", m_nMines );
//	AfxGetApp()->WriteProfileInt( szSection, "Mark", m_bMark );
//	for( int i = 0; i < 3; i ++ )
//	{
//		CString strEntry;
//		strEntry.Format( "Time%d", i + 1 );
//		AfxGetApp()->WriteProfileInt( szSection, strEntry, m_recordTime[i] );
//		strEntry.Format( "Name%d", i + 1 );
//		AfxGetApp()->WriteProfileString( szSection, strEntry, m_recordName[i] );
//	}	
}


BEGIN_MESSAGE_MAP(CChildView,CWnd )
	//{{AFX_MSG_MAP(CChildView)
	ON_WM_PAINT()
	ON_COMMAND(ID_GAME_NEW, OnGameNew)
	ON_WM_CREATE()
	ON_WM_LBUTTONDOWN()
//	ON_WM_RBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
//	ON_WM_RBUTTONUP()
	ON_WM_TIMER()
	ON_COMMAND(ID_GAME_CUSTOMIZE, OnGameCustomize)
	ON_COMMAND(ID_GAME_MARK, OnGameMark)
	ON_UPDATE_COMMAND_UI(ID_GAME_MARK, OnUpdateGameMark)
	ON_COMMAND(ID_GAME_RECORD, OnGameRecord)
	ON_COMMAND(ID_HELP_TOPICS, OnHelpTopics)
	//}}AFX_MSG_MAP
	ON_COMMAND_RANGE(ID_GAME_BASIC, ID_GAME_EXPERT, OnGameLevel)
	ON_UPDATE_COMMAND_UI_RANGE(ID_GAME_BASIC, ID_GAME_CUSTOMIZE, OnUpdateGameLevel)
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CChildView message handlers

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) 
{
	if (!CWnd::PreCreateWindow(cs))
		return FALSE;

	cs.style &= ~WS_BORDER;
//	cs.lpszClass = AfxRegisterWndClass(0, ::LoadCursor(NULL, IDC_ARROW));

	return TRUE;
}

void CChildView::DrawFrame( CDC *pDC )
{
	CRect rc;
	GetClientRect( &rc );
	int w = rc.Width() - 1;
	int h = rc.Height() - 1;
	CPen penDKGray;
	penDKGray.CreatePen( PS_DASH, 1, RGB(127,127,127) );
	
	pDC->FillSolidRect( 0, 0, w, 55, RGB(191,191,191) );
	pDC->FillSolidRect( CRect(0,55,12,h-12), RGB(191,191,191) );
	pDC->FillSolidRect( CRect(0,h-12,w,h), RGB(191,191,191) );
	pDC->FillSolidRect( CRect(w-11,55,w,h-12), RGB(191,191,191) );

	CPen *ppenOld = (CPen *)(pDC->SelectStockObject( WHITE_PEN ));
	pDC->MoveTo( w-1, 0 );
	pDC->LineTo( 0, 0 );
	pDC->LineTo( 0, h );
	pDC->MoveTo( w-2, 1 );
	pDC->LineTo( 1, 1 );
	pDC->LineTo( 1, h-1 );
	pDC->MoveTo( w-3, 2 );
	pDC->LineTo( 2, 2 );
	pDC->LineTo( 2, h-2 );

	pDC->MoveTo( w-9, 10 );
	pDC->LineTo( w-9, 45 );
	pDC->LineTo( 9, 45 );
	pDC->MoveTo( w-10, 11 );
	pDC->LineTo( w-10, 44 );
	pDC->LineTo( 10, 44 );

	pDC->MoveTo( w-9, 53 );
	pDC->LineTo( w-9, h-9 );
	pDC->LineTo( 9, h-9 );
	pDC->MoveTo( w-10, 54 );
	pDC->LineTo( w-10, h-10 );
	pDC->LineTo( 10, h-10 );
	pDC->MoveTo( w-11, 55 );
	pDC->LineTo( w-11, h-11 );
	pDC->LineTo( 11, h-11 );

	pDC->SelectObject( &penDKGray );
	pDC->MoveTo( w, 1 );
	pDC->LineTo( w, h );
	pDC->LineTo( 1, h );
	pDC->MoveTo( w-1, 2 );
	pDC->LineTo( w-1, h-1 );
	pDC->LineTo( 2, h-1 );
	pDC->MoveTo( w-2, 3 );
	pDC->LineTo( w-2, h-2 );
	pDC->LineTo( 3, h-2 );

	pDC->MoveTo( w-10, 9 );
	pDC->LineTo( 9, 9 );
	pDC->LineTo( 9, 45 );
	pDC->MoveTo( w-11, 10 );
	pDC->LineTo( 10, 10 );
	pDC->LineTo( 10, 44 );

	pDC->MoveTo( w-10, 52 );
	pDC->LineTo( 9, 52 );
	pDC->LineTo( 9, h-9 );
	pDC->MoveTo( w-11, 53 );
	pDC->LineTo( 10, 53 );
	pDC->LineTo( 10, h-10 );
	pDC->MoveTo( w-12, 54 );
	pDC->LineTo( 11, 54 );
	pDC->LineTo( 11, h-11 );

	pDC->SelectObject( ppenOld );
}

void CChildView::DrawCell( CDC *pDC, int row, int col, int cell )
{
	CDC dcMem;
	dcMem.CreateCompatibleDC( pDC );
	CBitmap *pbmOld = (CBitmap *)(dcMem.SelectObject(&m_bmCells));
	if( cell == -1 )
		cell = m_board[row][col];
	pDC->BitBlt( 12+col*16, 55+row*16, 16, 16, &dcMem, 
		0, (15-cell)*16, SRCCOPY );
	dcMem.SelectObject( pbmOld );
}

void CChildView::DrawAdjacentCells( CDC *pDC, int row, int col, int cell )
{
	for( int i = 0; i < 8; i ++ )
	{
		int nextrow = row + ymove[i];
		int nextcol = col + xmove[i];
		if( InBound(nextrow, nextcol) &&
			m_board[nextrow][nextcol] == NONE )
			DrawCell( pDC, nextrow, nextcol, cell );
	}
	if( m_board[row][col] == NONE )
		DrawCell( pDC, row, col, cell );
}


void CChildView::DrawBoard( CDC *pDC )
{
	CDC dcMem;
	dcMem.CreateCompatibleDC( pDC );
	CBitmap *pbmOld = (CBitmap *)(dcMem.SelectObject(&m_bmCells));
	
	for( int row = 0; row < m_height; row ++ )
		for( int col = 0; col < m_width; col ++ )
		{
			pDC->BitBlt( 12+col*16, 55+row*16, 16, 16, &dcMem, 
				0, (15-m_board[row][col])*16, SRCCOPY );
		}
	dcMem.SelectObject( pbmOld );
}

void CChildView::DrawButton( CDC *pDC, int face )
{
	CRect rc;
	GetClientRect( &rc );
	CDC dcMem;
	dcMem.CreateCompatibleDC( pDC );
	CBitmap *pbmOld = (CBitmap *)(dcMem.SelectObject(&m_bmFaces));
	
	pDC->BitBlt( m_rcButton.left, m_rcButton.top, 24, 24, 
		&dcMem, 0, face*24, SRCCOPY );
	
	dcMem.SelectObject( pbmOld );
}

void CChildView::DrawLCD( CDC *pDC, int x, int y, int num )
{
	CDC dcMem;
	dcMem.CreateCompatibleDC( pDC );
	CBitmap *pbmOld = (CBitmap *)(dcMem.SelectObject(&m_bmNumber));
	
	char buf[4];
	sprintf( buf, "%03d", num );
	for( int i = 0; i < 3; i ++ )
	{
		if( buf[i] == '-' )
			pDC->BitBlt( x, y, 13, 23, &dcMem, 0, 0, SRCCOPY );
		else
			pDC->BitBlt( x, y, 13, 23, &dcMem, 0, (11-buf[i]+'0')*23, SRCCOPY );
		x += 13;
	}
	dcMem.SelectObject( pbmOld );
}


void CChildView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CDC dcMem;
	dcMem.CreateCompatibleDC( &dc );
	CRect rc;
	GetClientRect( &rc );
	CBitmap bm;
	bm.CreateCompatibleBitmap( &dc, rc.Width(), rc.Height() );
	CBitmap *pbmOld = (CBitmap *)(dcMem.SelectObject(&bm));

	DrawFrame( &dcMem );
	DrawBoard( &dcMem );
	DrawLCD( &dcMem, 17, 16, m_nMinesLeft );
	DrawLCD( &dcMem, rc.Width()-57, 16, m_time );
	if( m_gameState == GS_GAMEOVER )
		DrawButton( &dcMem, ANGRY );
	else if( m_gameState == GS_ACTIVE )
		DrawButton( &dcMem, SMILE );
	else
		DrawButton( &dcMem, WIN );

	dc.BitBlt( 0, 0, rc.Width(), rc.Height(), &dcMem, 0, 0, SRCCOPY );
	dcMem.SelectObject( pbmOld );
}

BOOL CChildView::InBound( int row, int col )
{
	return (row >= 0 && row < m_height &&
			col >= 0 && col < m_width);
}


void CChildView::OnGameNew() 
{
	KillTimer( 1 );
	m_gameState = GS_ACTIVE;

	switch( m_level )
	{
	case BASIC:
		m_width = 8;
		m_height = 8;
		m_nMines = 10;
		break;
	case INTERMEDIATE:
		m_width = 15;
		m_height = 15;
		m_nMines = 40;
		break;
	case EXPERT:
		m_width = 30;
		m_height = 16;
		m_nMines = 99;
		break;
	}
	m_nMinesLeft = m_nMines;
	m_nDug = 0;

	for( int i = 0; i < m_height; i ++ )
		for( int j = 0; j < m_width; j ++ )
		{
			m_mines[i][j] = 0;
			m_board[i][j] = NONE;
		}
	
	for( i = 0; i < m_nMines; )
	{
		int row = rand() % m_height;
		int col = rand() % m_width;
		if( m_mines[row][col] == 0 )
		{
			m_mines[row][col] = 9;
			i ++;
		}
	}

	for( int row = 0; row < m_height; row ++ )
		for( int col = 0; col < m_width; col ++ )
		{
			if( m_mines[row][col] == 0 )
			{
				for( i = 0; i < 8; i ++ )
				{
					int nextrow = row + ymove[i];
					int nextcol = col + xmove[i];
					if( InBound(nextrow, nextcol) &&
						m_mines[nextrow][nextcol] == 9 )
						m_mines[row][col] ++;
				}
			}
		}

	AfxGetMainWnd()->SetWindowPos( NULL, 0, 0, 30+16*m_width, 
		110+16*m_height, SWP_NOMOVE | SWP_NOZORDER );
	CRect rc;
	GetClientRect( &rc );
	m_rcButton.left = (rc.Width()-24)/2;
	m_rcButton.top = 16;
	m_rcButton.right = m_rcButton.left + 24;
	m_rcButton.bottom = m_rcButton.top + 24;
	m_bButtonPressed = FALSE;
	m_lastrow = -1;
	m_time = 0;
	m_bFirst = TRUE;

	Invalidate();
}

int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CWnd ::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	OnGameNew();
	
	return 0;
}

void CChildView::GameOver( int row, int col )
{
	for( int i = 0; i < m_height; i ++ )
		for( int j = 0; j < m_width; j ++ )
		{
			if( m_mines[i][j] == 9 )
			{
				if( m_board[i][j] != FLAG )
					m_board[i][j] = MINE;
			}
			else if( m_board[i][j] == FLAG )
				m_board[i][j] = CROSS;
		}
	m_board[row][col] = EXPLODE;
	m_gameState = GS_GAMEOVER;
	KillTimer( 1 );
	Invalidate();
}

void CChildView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	SetCapture();

	CClientDC dc(this);
	if( m_rcButton.PtInRect(point) )
	{
		m_bButtonPressed = TRUE;
		DrawButton( &dc, PRESSED );
		return;
	}
	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美偷拍另类a∨色屁股| 99免费精品在线观看| 欧美日韩久久一区| 亚洲一区二区视频| 一本高清dvd不卡在线观看 | 日本大香伊一区二区三区| 中文字幕乱码久久午夜不卡| 成人免费视频免费观看| 自拍偷拍国产精品| 91成人国产精品| 日本在线不卡视频一二三区| 日韩精品中午字幕| 成人国产亚洲欧美成人综合网| 中文字幕在线观看不卡视频| 欧美影视一区在线| 久久激五月天综合精品| 国产精品久久久久aaaa| 欧美特级限制片免费在线观看| 日本va欧美va精品| 中文字幕精品一区二区三区精品| 日本高清视频一区二区| 久久精品国产一区二区| 国产精品成人免费| 欧美刺激脚交jootjob| 一本大道久久a久久综合婷婷| 亚洲国产毛片aaaaa无费看| 国产亚洲一区字幕| 欧洲激情一区二区| 粉嫩嫩av羞羞动漫久久久| 亚洲国产综合在线| 国产精品每日更新| 欧美精品一区二区三区四区| 欧美专区亚洲专区| 色综合久久综合| 懂色av一区二区三区免费看| 青青草原综合久久大伊人精品| 亚洲手机成人高清视频| 国产精品国产三级国产普通话蜜臀| 日韩欧美你懂的| 欧美一级国产精品| 欧美日韩一区二区三区免费看 | 老司机精品视频一区二区三区| 亚洲天堂a在线| 日本一区二区成人在线| 2014亚洲片线观看视频免费| 日韩欧美国产午夜精品| 欧美另类videos死尸| 欧美日韩一区高清| 色综合久久天天| 国产jizzjizz一区二区| 国产成人av一区二区三区在线观看| 日本欧美大码aⅴ在线播放| 亚洲欧美日韩国产综合| 亚洲精品你懂的| 亚洲综合图片区| 丝袜脚交一区二区| 美国十次综合导航| 国产一区二区成人久久免费影院 | 依依成人精品视频| 亚洲va欧美va人人爽| 免费在线观看一区| 国产精品一二三区在线| 91网页版在线| 69堂亚洲精品首页| 欧美国产一区视频在线观看| 亚洲激情自拍偷拍| 日本人妖一区二区| 成人高清视频在线| 欧美日韩成人综合天天影院| 国产欧美日韩视频在线观看| 一区二区三区鲁丝不卡| 激情深爱一区二区| 在线免费观看日韩欧美| 亚洲精品在线网站| 亚洲国产日日夜夜| 国产成人av影院| 欧美sm美女调教| 五月婷婷激情综合| 99在线精品一区二区三区| 日韩欧美成人激情| 亚洲香肠在线观看| 91福利小视频| 中文字幕一区二区在线播放| 午夜精品视频一区| 暴力调教一区二区三区| 26uuu亚洲综合色欧美| 亚洲超碰97人人做人人爱| 成人免费毛片嘿嘿连载视频| 精品少妇一区二区三区在线视频 | 午夜视频在线观看一区二区| 成人av小说网| 欧美国产日韩一二三区| 国内精品久久久久影院一蜜桃| 欧美日韩黄色一区二区| 一区二区三区中文字幕| 99在线精品一区二区三区| 日韩欧美国产电影| 亚洲成a人片在线观看中文| 欧美体内she精高潮| 视频在线观看91| 99热99精品| 亚洲一线二线三线视频| 欧美中文字幕一二三区视频| 国产精品乱码妇女bbbb| 成人av在线网站| 一区二区三区在线观看欧美| 欧美色视频在线| 男男gaygay亚洲| 国产欧美一区二区三区网站| 99vv1com这只有精品| 舔着乳尖日韩一区| 久久久久久黄色| 欧美特级限制片免费在线观看| 亚洲午夜一二三区视频| 亚洲婷婷国产精品电影人久久| 国产美女一区二区| 日本一区二区动态图| 夜夜嗨av一区二区三区网页| 欧美在线不卡一区| 久久激情综合网| 中文字幕一区二区不卡| 在线不卡一区二区| 国产成人av一区二区三区在线| 亚洲欧美日韩国产综合| 久久综合资源网| 欧美剧在线免费观看网站| 丁香婷婷综合五月| 麻豆成人免费电影| 午夜私人影院久久久久| 综合久久国产九一剧情麻豆| 欧美精品一区二区三| 欧美精品在线视频| 丁香另类激情小说| 久久se精品一区精品二区| 水蜜桃久久夜色精品一区的特点| 亚洲国产精品激情在线观看| 日韩欧美国产一区二区三区| 一本色道久久综合狠狠躁的推荐| 成人91在线观看| 99精品国产99久久久久久白柏| 国产一区高清在线| 亚洲18色成人| 午夜精品久久久久久久99水蜜桃 | 中文字幕一区二| 亚洲四区在线观看| 一区二区三区蜜桃| 一区二区三区产品免费精品久久75| 亚洲品质自拍视频网站| 1000部国产精品成人观看| 亚洲欧美一区二区三区久本道91| 国产精品久久久久久户外露出| 国产日产欧产精品推荐色| 久久久国产精品不卡| 国产精品久久久久久久第一福利| 椎名由奈av一区二区三区| 亚洲图片激情小说| 日韩在线卡一卡二| 国产成人在线免费观看| 91香蕉视频mp4| 欧洲精品中文字幕| 精品少妇一区二区| 国产精品久久毛片a| 天天免费综合色| 国产成人综合自拍| 91浏览器打开| 日韩欧美资源站| 欧美国产日韩亚洲一区| 午夜欧美大尺度福利影院在线看| 蜜臀av亚洲一区中文字幕| 成人av网站免费| 欧美一区二区国产| ...xxx性欧美| 韩国av一区二区三区| 91丨porny丨首页| 欧美va在线播放| 天天综合日日夜夜精品| 91丨porny丨在线| 国产丝袜美腿一区二区三区| 天天亚洲美女在线视频| 一本大道av伊人久久综合| 精品国产一区久久| 日韩精品国产精品| 欧美日韩一级片在线观看| 中文字幕一区二区三区蜜月| 国产一区999| www久久精品| 国模冰冰炮一区二区| 日韩欧美亚洲国产另类| 日韩av二区在线播放| 精品视频免费在线| 亚洲一区二区在线视频| 欧美三级电影网| 日韩高清不卡一区二区| 欧美精品久久天天躁| 婷婷中文字幕综合| 91精品免费在线观看| 日本在线不卡视频一二三区| 欧美一区二区三区视频免费 | 精品午夜久久福利影院| 欧美xxxxxxxx|