📄 hwrectview.cpp
字号:
GameStatus[xx2][yy2] = 1;
GameStatus[xx3][yy3] = 1;
GameStatus[xx4][yy4] = 1;
InvalidateCurrent();
//改变形状代码
m_currentRect = m_lscurrentRect;
}
else
{
GameStatus[x1][y1] = 1;
GameStatus[x2][y2] = 1;
GameStatus[x3][y3] = 1;
GameStatus[x4][y4] = 1;
}
//判断是否已到底
ActiveIsBottom();
}
/* * * * * * * * * * * * * * * * * * * * * *
* 内部函数:游戏开始
*
* 最后修改日期:1999.1.22
* * * * * * * * * * * * * * * * * * * * * */
void CHWRECTView::OnGameStart()
{
if (!m_bGamePaush) //如果不是游戏暂停状态,则必须作些初始工作
{
m_bGameEnd = FALSE;
//总分值清零, 并显示总分记分牌
m_iPerformance = 0;
//显示当前的区域及游戏级别的汉字描述
CurrentAreaAndLevel();
CRect rect(m_iStartY, m_iStartX, m_iStartY+440, m_iStartX+370);
InvalidateRect(&rect);
}
m_bGamePaush = FALSE;
SetTimer(1,1500-250*m_iLevel,NULL);
}
//游戏暂停
void CHWRECTView::OnGamePaush()
{
m_bGamePaush = TRUE;
KillTimer(1);
}
/* * * * * * * * * * * * * * * * * * * * * *
* 内部函数:游戏结束
*
* 最后修改日期:1999.1.22
* * * * * * * * * * * * * * * * * * * * * */
void CHWRECTView::OnGameEnd()
{
m_bGameEnd = TRUE;
int i,j;
for (i=0;i<m_iRow;i++)
for (j=0;j<m_iCol;j++)
GameStatus[i][j]=0;
CRect rect(m_iStartY, m_iStartX, m_iStartY+440, m_iStartX+370);
InvalidateRect(&rect);
m_bGamePaush = FALSE; //清除游戏暂停状态
KillTimer(1);
}
/* * * * * * * * * * * * * * * * * * * * * *
* 内部函数:刷新当前的区域
*
* 只刷新需要刷新的四个小方块区域,防止屏幕抖动情况发生
*
* 最后修改日期:1999.1.22
* * * * * * * * * * * * * * * * * * * * * */
void CHWRECTView::InvalidateCurrent()
{
int i;
for (i=0;i<4;i++)
{
CRect rect(m_iStartX+ActiveStatus[i][1]*m_iLarge, m_iStartY+ActiveStatus[i][0]*m_iLarge,
m_iStartX+(ActiveStatus[i][1]+1)*m_iLarge+5, m_iStartY+(ActiveStatus[i][0]+1)*m_iLarge);
InvalidateRect(&rect);
}
}
/* * * * * * * * * * * * * * * * * * * * * *
* 内部函数:游戏设置
*
* 最后修改日期:1999.1.22
* * * * * * * * * * * * * * * * * * * * * */
void CHWRECTView::OnGameOption()
{
//参数顺序: 区域大小代码:0-3,分别为:12X10,18X15,24X20,m_iLargeX25
//级别:0-5,分别为:1500,1200,1000,800,600,400
//背景音乐:TRUE 或者 FALSE
int m_lsArea;
switch(m_iRow)
{
case 12:
m_lsArea = 0;
break;
case 18:
m_lsArea = 1;
break;
case 24:
m_lsArea = 2;
break;
case 30:
m_lsArea = 3;
break;
}
COptionDlg dlg(m_lsArea,m_iLevel,m_bMusic,m_bDrawGrid);
if (dlg.DoModal()==IDOK)
{
//确定区域的大小
switch(dlg.m_iArea)
{
case 0:
m_iRow = 12;
m_iCol = 10;
m_iLarge = 30;
break;
case 1:
m_iRow = 18;
m_iCol = 15;
m_iLarge = 20;
break;
case 2:
m_iRow = 24;
m_iCol = 20;
m_iLarge = 15;
break;
case 3:
m_iRow = 30;
m_iCol = 25;
m_iLarge = 12;
break;
}
//确定级别
m_iLevel = dlg.m_iLevel;
//确定是否绘网格背景
m_bDrawGrid = dlg.m_bDrawGrid;
//检查是否插放音乐
m_bMusic = dlg.m_bMusic;
if (m_bMusic)
PlayMid();
else
StopMid();
Invalidate();
}
}
//用于生成当前区域大小与级别所对应的汉字描述
void CHWRECTView::CurrentAreaAndLevel()
{
switch(m_iRow)
{
case 12:
m_strArea = "12行10列"; break;
case 18:
m_strArea = "18行15列"; break;
case 24:
m_strArea = "24行20列"; break;
case 30:
m_strArea = "30行25列"; break;
}
switch(m_iLevel)
{
case 0:
m_strLevel = "第一级: 蜗牛级"; break;
case 1:
m_strLevel = "第二级: 笨鸭级"; break;
case 2:
m_strLevel = "第三级: 雄鸡级"; break;
case 3:
m_strLevel = "第四级: 猎狗级"; break;
case 4:
m_strLevel = "第五级: 云豹级"; break;
case 5:
m_strLevel = "第六级: 飞鹰级"; break;
}
}
/* * * * * * * * * * * * * * * * * * * * * *
* 内部函数:以下为菜单屏蔽与开启控制
*
* 最后修改日期:1999.1.22
* * * * * * * * * * * * * * * * * * * * * */
//如果游戏开始,则此[开始游戏]按钮被屏蔽
void CHWRECTView::OnUpdateGameStart(CCmdUI* pCmdUI)
{
if (m_bGameEnd || m_bGamePaush)
pCmdUI->Enable(TRUE);
else
pCmdUI->Enable(FALSE);
}
//如果游戏开始,则此[游戏设置]按钮被屏蔽
void CHWRECTView::OnUpdateGameOption(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI->Enable(TRUE);
else
pCmdUI->Enable(FALSE);
}
//如游戏开始,则[游戏暂停]按钮开启
void CHWRECTView::OnUpdateGamePaush(CCmdUI* pCmdUI)
{
if (!m_bGameEnd)
pCmdUI->Enable(TRUE);
else
pCmdUI->Enable(FALSE);
}
//如果游戏开始,则此[游戏结束]按钮被开启
void CHWRECTView::OnUpdateGameEnd(CCmdUI* pCmdUI)
{
if (!m_bGameEnd)
pCmdUI->Enable(TRUE);
else
pCmdUI->Enable(FALSE);
}
//如果游戏开始,则此[退出系统]按钮被屏蔽
void CHWRECTView::OnUpdateGameExit(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI->Enable(TRUE);
else
pCmdUI->Enable(FALSE);
}
//如果游戏开始,则此[关于]按钮被屏蔽
void CHWRECTView::OnUpdateHelpAbout(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI->Enable(TRUE);
else
pCmdUI->Enable(FALSE);
}
//如果游戏开始,则此[帮助]按钮被屏蔽
void CHWRECTView::OnUpdateHelpHelp(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI->Enable(FALSE);
else
pCmdUI->Enable(FALSE);
}
void CHWRECTView::OnHelpHelp()
{
}
//用菜单设置区域大小
void CHWRECTView::OnUpdateOptionArea1(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iRow==12)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionArea2(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iRow==18)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionArea3(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iRow==24)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionArea4(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iRow==30)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
//用菜单设置区域大小
void CHWRECTView::OnOptionArea1()
{
m_iRow = 12;
m_iCol = 10;
m_iLarge = 30;
Invalidate();
}
void CHWRECTView::OnOptionArea2()
{
m_iRow = 18;
m_iCol = 15;
m_iLarge = 20;
Invalidate();
}
void CHWRECTView::OnOptionArea3()
{
m_iRow = 24;
m_iCol = 20;
m_iLarge = 15;
Invalidate();
}
void CHWRECTView::OnOptionArea4()
{
m_iRow = 30;
m_iCol = 25;
m_iLarge = 12;
Invalidate();
}
// 用菜单设置游戏级别
void CHWRECTView::OnUpdateOptionLevel1(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iLevel == 0)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionLevel2(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iLevel == 1)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionLevel3(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iLevel == 2)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionLevel4(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iLevel == 3)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionLevel5(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iLevel == 4)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnUpdateOptionLevel6(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_iLevel == 5)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
//用菜单设置游戏级别
void CHWRECTView::OnOptionLevel1()
{
m_iLevel = 0;
}
void CHWRECTView::OnOptionLevel2()
{
m_iLevel = 1;
}
void CHWRECTView::OnOptionLevel3()
{
m_iLevel = 2;
}
void CHWRECTView::OnOptionLevel4()
{
m_iLevel = 3;
}
void CHWRECTView::OnOptionLevel5()
{
m_iLevel = 4;
}
void CHWRECTView::OnOptionLevel6()
{
m_iLevel = 5;
}
//用菜单设置是否有网格
void CHWRECTView::OnUpdateOptionGrid(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_bDrawGrid)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnOptionGrid()
{
if (m_bDrawGrid)
m_bDrawGrid = FALSE;
else
m_bDrawGrid = TRUE;
Invalidate();
}
//插放背景音乐, 所有错误忽略
void CHWRECTView::PlayMid()
{
HWND hWnd;
hWnd = GetSafeHwnd();
char inBuf[300],outBuf[60],fileName[255];
MCIERROR mciError;
strcpy(fileName,"hwrect.mid");
wsprintf( inBuf,"open %s type sequencer alias myseq",fileName);
mciError = mciSendString( inBuf, outBuf, sizeof(outBuf), NULL);
if (mciError == 0)
{
mciError = mciSendString("play myseq notify",NULL,0, hWnd);
if (mciError != 0)
mciSendString("close myseq",NULL,0,NULL);
}
}
//终止插放背景音乐
void CHWRECTView::StopMid()
{
mciSendString("close myseq",NULL,0,NULL);
}
//用菜单设置是否插放音乐
void CHWRECTView::OnUpdateOptionMusic(CCmdUI* pCmdUI)
{
if (m_bGameEnd)
pCmdUI -> Enable(TRUE);
else
pCmdUI -> Enable(FALSE);
if (m_bMusic)
pCmdUI -> SetCheck(TRUE);
else
pCmdUI -> SetCheck(FALSE);
}
void CHWRECTView::OnOptionMusic()
{
if (m_bMusic)
{
m_bMusic = FALSE;
StopMid();
}
else
{
m_bMusic = TRUE;
PlayMid();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -