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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tetris~1.cpp

?? 經典的一款俄羅斯方塊-源程序.java.~
?? CPP
字號:
/////////////////////////////////////////////////////////////////////////////
// This file is part of the completely free tetris clone "CGTetris".
//
// This is free software.
// You may redistribute it by any means providing it is not sold for profit
// without the authors written consent.
//
// No warrantee of any kind, expressed or implied, is included with this
// software; use at your own risk, responsibility for damages (if any) to
// anyone resulting from the use of this software rests entirely with the
// user.
//
/////////////////////////////////////////////////////////////////////////////


// TetrisDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Tetris.h"
#include "TetrisDlg.h"
#include "MainDlg.h"
#include "GameOverDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTetrisDlg dialog

CTetrisDlg::CTetrisDlg()
	: CBitmapPropPage(CTetrisDlg::IDD, IDS_TitleGamePage)
{
	//{{AFX_DATA_INIT(CTetrisDlg)
	m_strLevel = _T("");
	m_strLines = _T("");
	m_strScore = _T("");
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP;
	m_bInGame = false;
	m_bPaused = false;
	m_pGameBoard = 0;
	m_pPiecePreview = 0;
	m_uScore = 0;
	m_uLevel = 0;
	m_uLines = 0;
}

void CTetrisDlg::DoDataExchange(CDataExchange* pDX)
{
	CBitmapPropPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTetrisDlg)
	DDX_Text(pDX, IDC_TxtLevel, m_strLevel);
	DDX_Text(pDX, IDC_TxtLines, m_strLines);
	DDX_Text(pDX, IDC_TxtScore, m_strScore);
	//}}AFX_DATA_MAP
	DDX_Control(pDX, IDC_Pause, m_btnPauseResume);
	DDX_Control(pDX, IDC_BtnStart, m_btnStartStop);
	DDX_Control(pDX, IDC_MoveLeft, m_btnMoveLeft);
	DDX_Control(pDX, IDC_MoveRight, m_btnMoveRight);
	DDX_Control(pDX, IDC_Rotate, m_btnRotate);
	DDX_Control(pDX, IDC_Place, m_btnPlace);

	DDX_Control(pDX, IDC_Score, m_ctrlScore);
	DDX_DigiDisplay(pDX, IDC_Score, m_uScore);
	DDX_Control(pDX, IDC_Lines, m_ctrlLines);
	DDX_DigiDisplay(pDX, IDC_Lines, m_uLines);
	DDX_Control(pDX, IDC_Level, m_ctrlLevel);
	DDX_DigiDisplay(pDX, IDC_Level, m_uLevel);

	if( 0 == m_pGameBoard )
		m_pGameBoard = (CGameBoard*) GetDlgItem(IDC_GameBoard);
	ASSERT(0 != m_pGameBoard);

	if( 0 == m_pPiecePreview )
		m_pPiecePreview = (CPiecePreview*) GetDlgItem(IDC_PiecePreview);
	ASSERT(0 != m_pPiecePreview);

	if( ! pDX->m_bSaveAndValidate ) {
		// display correct text
		m_btnPauseResume.SetWindowText(m_bPaused ? m_strResume : m_strPause);
		m_btnStartStop.SetWindowText(m_bInGame ? m_strStop : m_strStart);
	}
}

BEGIN_MESSAGE_MAP(CTetrisDlg, CBitmapPropPage)
	//{{AFX_MSG_MAP(CTetrisDlg)
	ON_BN_CLICKED(IDC_BtnStart, OnBtnStart)
	ON_BN_CLICKED(IDC_Pause, OnPause)
	ON_BN_CLICKED(IDC_MoveLeft, OnMoveLeft)
	ON_BN_CLICKED(IDC_MoveRight, OnMoveRight)
	ON_BN_CLICKED(IDC_Rotate, OnRotate)
	ON_BN_CLICKED(IDC_Place, OnPlace)
	//}}AFX_MSG_MAP
	ON_NOTIFY(NMB_STATISTICS, IDC_GameBoard, OnUpdateStatistics)
	ON_NOTIFY(NMB_GAMEOVER, IDC_GameBoard, OnGameOver)
	ON_NOTIFY(NMB_PREVIEW, IDC_GameBoard, OnPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTetrisDlg message handlers

BOOL CTetrisDlg::OnInitDialog()
{
	CBitmapPropPage::OnInitDialog();

	LoadAllStrings();

	GetDlgItem(IDC_Pause)->EnableWindow(FALSE);
	ASSERT(m_pGameBoard != 0);
	m_pGameBoard->EnableSound(theApp.GetWantSound());
	m_pGameBoard->EnableMusic(theApp.GetWantMusic());
	m_pGameBoard->ShowGrid(theApp.GetWantGrid());
	m_pGameBoard->SetMusicType(theApp.GetMusicType());
	m_pGameBoard->UseExFigureSet(theApp.GetWantExFigures());
	m_pGameBoard->SetVolume(theApp.GetVolume());
	int w, h;
	theApp.GetSquareSize(w, h);
	m_pGameBoard->SetDimension(w, h);

	m_btnMoveLeft.SetIcon(IDI_MoveLeft, CSize(10, 10));
	m_btnMoveRight.SetIcon(IDI_MoveRight, CSize(10, 10));
	m_btnPlace.SetIcon(IDI_Place, CSize(10, 10));
	m_btnRotate.SetIcon(IDI_Rotate, CSize(10, 10));

	return TRUE;  // return TRUE  unless you set the focus to a control
}

BOOL CTetrisDlg::OnSetActive() 
{
	m_pGameBoard->InitBoard();
	return CBitmapPropPage::OnSetActive();
}

void CTetrisDlg::OnBtnStart() 
{
	if( m_bInGame )
		m_pGameBoard->StopGame();
	else {
		// Starting the game requires loading the music.
		// This may take 2 seconds (more or less :-)
		CWaitCursor curs;
		m_pGameBoard->StartGame();
	}
	m_bInGame = !m_bInGame;

	if( m_bInGame ) {
		m_btnPauseResume.EnableWindow();
		GotoDlgCtrl(GetDlgItem(IDC_Pause));
		if( m_bPaused )
			OnPause();	// reset the pause flag
	} else {
		m_pPiecePreview->ViewPiece(0);
		m_btnPauseResume.EnableWindow(FALSE);
		GotoDlgCtrl(GetDlgItem(IDC_BtnStart));
	}

	UpdateData(FALSE);
}

void CTetrisDlg::OnPause() 
{
	m_bPaused = ! m_bPaused;
	if( !m_bPaused ) {
		// Starting the game requires loading the music.
		// This may take 2 seconds (more or less :-)
		CWaitCursor curs;
		m_pGameBoard->ResumeGame();
	} else
		m_pGameBoard->PauseGame();

	UpdateData(FALSE);

	GotoDlgCtrl(GetDlgItem(IDC_Pause));
}

BOOL CTetrisDlg::OnKillActive() 
{
	if( m_bInGame )
		OnBtnStart();	// simulate a stop request
	return CBitmapPropPage::OnKillActive();
}


void CTetrisDlg :: OnUpdateStatistics(NMHDR * pNMHDR, LRESULT * )
{
	NMBOARD * pBoard = (NMBOARD*)pNMHDR;
	m_uScore = pBoard->points;
	m_uLines = pBoard->lines;
	m_uLevel = pBoard->level;
	UpdateData(FALSE);
}

void CTetrisDlg :: OnGameOver(NMHDR *, LRESULT * )
{
	CGameOverDlg dlg;
	dlg.DoModal();
	ASSERT(m_bInGame);
	OnBtnStart();	// simulate a stop request
	ASSERT(m_pPiecePreview != 0);
	m_pPiecePreview->ViewPiece(0);
	((CMainDlg *)GetParent())->SetHiScore(m_uScore, m_uLevel);
}

void CTetrisDlg :: OnPreview(NMHDR * pNMHDR, LRESULT * )
{
	NMPREVIEW * pPreview = (NMPREVIEW*)pNMHDR;
	ASSERT(m_pPiecePreview != 0);
	ASSERT(pPreview->piece != 0);
	m_pPiecePreview->ViewPiece(pPreview->piece);
}

BOOL CTetrisDlg::PreTranslateMessage(MSG* pMsg) 
{
	// We handle the key in a different way only if the CTRL key isn't
	// down in the moment.
	if( ! (::GetAsyncKeyState(VK_CONTROL) & (1<<(sizeof(SHORT)*8-1))) ) {
		if(pMsg->message == WM_KEYDOWN) {
			if( pMsg->wParam == VK_RETURN ) {
				if( m_bInGame ) {
					// simulate a "Pause Game" request
					OnPause();
				} else {
					// simulate a "Start Game" request
					OnBtnStart();
				}
				return TRUE;
			}
		}

		// Maybe the game board has usage for the key ...
		if( pMsg->message == WM_KEYDOWN ||
			pMsg->message == WM_KEYUP   ||
			pMsg->message == WM_CHAR )
				if( m_pGameBoard && m_pGameBoard->SendMessage(pMsg->message, pMsg->wParam, pMsg->lParam) == 0 )
				return TRUE;
	}

	return CBitmapPropPage::PreTranslateMessage(pMsg);
}

void CTetrisDlg::OnMoveLeft() 
{
	if( m_bInGame )
		m_pGameBoard->MoveLeft();
}

void CTetrisDlg::OnMoveRight() 
{
	if( m_bInGame )
		m_pGameBoard->MoveRight();
}

void CTetrisDlg::OnRotate() 
{
	if( m_bInGame )
		m_pGameBoard->Rotate();
}

void CTetrisDlg::OnPlace() 
{
	if( m_bInGame )
		m_pGameBoard->StartFall();
		// Note that you cannot stop falling the piece if you're
		// using the mouse. You really should use your keyboard.
}

void CTetrisDlg :: LoadAllStrings() {
	VERIFY(CLanguage::LoadString(m_strScore, IDS_TxtScore));
	VERIFY(CLanguage::LoadString(m_strLines, IDS_TxtLines));
	VERIFY(CLanguage::LoadString(m_strLevel, IDS_TxtLevel));
	VERIFY(CLanguage::LoadString(m_strStart, IDS_TxtStart));
	VERIFY(CLanguage::LoadString(m_strStop, IDS_TxtStop));
	VERIFY(CLanguage::LoadString(m_strPause, IDS_TxtPause));
	VERIFY(CLanguage::LoadString(m_strResume, IDS_TxtResume));

	UpdateData(FALSE);
}

void CTetrisDlg::OnOK() 
{
	if(m_pGameBoard)
		theApp.WriteVolume(m_pGameBoard->GetVolume());
	CBitmapPropPage::OnOK();
}

void CTetrisDlg::OnCancel() 
{
	if(m_pGameBoard)
		theApp.WriteVolume(m_pGameBoard->GetVolume());
	CBitmapPropPage::OnCancel();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产真实精品久久二三区| 亚洲精品视频自拍| 国产成人精品综合在线观看| 亚洲综合清纯丝袜自拍| 久久亚洲一级片| 欧美美女bb生活片| av福利精品导航| 精品一区二区三区在线观看 | 国产精品综合av一区二区国产馆| 日本一区二区三区久久久久久久久不| 欧美日韩黄视频| 成人av影视在线观看| 久久超碰97人人做人人爱| 亚洲国产一区视频| 久久九九国产精品| 日韩天堂在线观看| 欧美日韩免费观看一区二区三区| 国产91富婆露脸刺激对白| 日韩精品国产欧美| 一区二区三区久久| 成人欧美一区二区三区1314| 26uuu色噜噜精品一区二区| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区三区四区高清| 色婷婷综合久久久久中文一区二区| 国产精品一区二区91| 免费欧美日韩国产三级电影| 午夜电影网一区| 亚洲福中文字幕伊人影院| 亚洲精品久久久久久国产精华液| 国产二区国产一区在线观看| 亚洲黄色小说网站| 国产精品美日韩| 国产情人综合久久777777| 精品电影一区二区| 欧美成人精品高清在线播放 | 日韩欧美一区二区免费| 911精品产国品一二三产区| 欧美中文字幕亚洲一区二区va在线 | 欧美精彩视频一区二区三区| 日韩视频永久免费| 欧美一区二区三区视频在线 | 麻豆91在线播放| 免费观看成人鲁鲁鲁鲁鲁视频| 天堂影院一区二区| 奇米精品一区二区三区四区 | 精品国产一区二区三区久久影院 | av福利精品导航| 91麻豆产精品久久久久久| 99热这里都是精品| 色av一区二区| 欧美日韩亚洲综合在线 | 成人免费视频一区| 丁香啪啪综合成人亚洲小说| 粉嫩绯色av一区二区在线观看 | 亚洲制服丝袜在线| 亚洲国产日日夜夜| 日本欧美肥老太交大片| 精品一区二区三区免费视频| 国产一区二区伦理片| 国产成人在线视频播放| 国产宾馆实践打屁股91| 懂色av一区二区夜夜嗨| 91免费观看在线| 欧美久久久久久久久久| 日韩天堂在线观看| 国产欧美日韩在线视频| 亚洲欧美日本在线| 婷婷综合五月天| 久久国产福利国产秒拍| 国产91高潮流白浆在线麻豆 | 盗摄精品av一区二区三区| 国产不卡视频一区二区三区| 日本高清不卡一区| 91精品国产综合久久久蜜臀粉嫩 | 91精彩视频在线| 99视频热这里只有精品免费| 欧美日韩精品专区| 久久久久久免费网| 亚洲综合网站在线观看| 精品一区二区三区欧美| 色哟哟欧美精品| 欧美大片日本大片免费观看| 国产精品卡一卡二卡三| 一个色妞综合视频在线观看| 精品制服美女久久| 91麻豆自制传媒国产之光| 亚洲精品一区二区三区四区高清| 1024成人网色www| 美女高潮久久久| 一本久道久久综合中文字幕| 91精品国产91久久综合桃花| 最新不卡av在线| 精品一区二区三区久久| 欧美日韩一区二区三区不卡| 国产亚洲一本大道中文在线| 亚洲韩国精品一区| 91精品国产91久久久久久一区二区| 国产三区在线成人av| 一区二区三区不卡在线观看| 美女一区二区三区在线观看| 99re8在线精品视频免费播放| 欧美tk—视频vk| 一区二区日韩电影| 成人丝袜视频网| 日韩精品一区二区三区视频| 亚洲成人免费视| av在线不卡观看免费观看| 欧美大片顶级少妇| 首页国产欧美日韩丝袜| 色婷婷亚洲精品| 国产精品久久影院| 国产精品一区二区在线观看不卡| 欧美精品日日鲁夜夜添| 亚洲另类一区二区| 丁香啪啪综合成人亚洲小说| 色综合久久中文综合久久牛| 久久亚洲精精品中文字幕早川悠里| 五月综合激情婷婷六月色窝| 91在线国产福利| 国产精品日韩精品欧美在线| 国产在线视频一区二区三区| 欧美一区二区二区| 日本一区二区三区视频视频| 日本伊人色综合网| 91美女在线观看| 国产精品少妇自拍| 国产乱一区二区| 精品精品国产高清a毛片牛牛| 亚洲一区二区美女| 欧洲色大大久久| 夜夜嗨av一区二区三区网页| 色婷婷一区二区三区四区| 亚洲人快播电影网| 色爱区综合激月婷婷| 成人欧美一区二区三区黑人麻豆| 高清久久久久久| 国产精品理论片| 99国产精品久久久久| 亚洲视频 欧洲视频| 亚洲日本va在线观看| 性感美女久久精品| 欧美视频一区二区三区四区| 有码一区二区三区| 国产不卡一区视频| 国产精品久久久久桃色tv| 成人手机电影网| 亚洲欧美日韩国产中文在线| 波多野洁衣一区| 亚洲色图色小说| 欧美日本一区二区| 免费人成在线不卡| 欧美videossexotv100| 美女视频第一区二区三区免费观看网站 | 色综合久久中文综合久久牛| 亚洲精品中文在线影院| 欧美色图在线观看| 蜜桃av噜噜一区二区三区小说| 久久综合狠狠综合久久综合88| 国产一区二区三区不卡在线观看| 亚洲国产精品ⅴa在线观看| av动漫一区二区| 午夜精品久久久久久久久久| 日韩免费观看高清完整版在线观看| 国产精一区二区三区| 中文字幕日本不卡| 欧美日韩国产小视频在线观看| 青青草91视频| 国产精品久久久久久久第一福利| 色视频一区二区| 青青草国产成人av片免费| 国产亚洲精品aa| 日本高清成人免费播放| 久久精品国产精品青草| 亚洲欧洲日韩在线| 欧美性一二三区| 国产一区二区精品久久| 亚洲视频在线一区| 日韩一区二区三区高清免费看看| 日韩精品国产精品| 国产婷婷一区二区| 欧美日韩综合不卡| 国产精品白丝jk白祙喷水网站| 亚洲综合色丁香婷婷六月图片| 精品国产91亚洲一区二区三区婷婷| 国产酒店精品激情| 亚洲综合色丁香婷婷六月图片| 欧美videos中文字幕| 91成人看片片| 国产一区二区三区在线看麻豆| 亚洲综合在线视频| 久久久三级国产网站| 欧美又粗又大又爽| 成人精品小蝌蚪| 久久国产尿小便嘘嘘| 亚洲成人三级小说| 亚洲欧洲精品天堂一级| 精品国产一区二区亚洲人成毛片 | 成人91在线观看| 美女国产一区二区三区|