📄 bitmapbrowserdlg.cpp
字号:
// }
return;
}
if (m_sOB[0]->pt.x==29 || m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE || m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y-1].state==TRUE)
{
m_ptFlag=LEFTUP;
if (m_sOB[0]->pt.y-1<0)
{
return;
}
else if(m_sOB[0]->pt.x<28)
{
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state=FALSE;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].clr=0;
}
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y-1].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y-1].state=FALSE;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y-1].clr=0;
}
return;
}
else if (m_sOB[0]->pt.x==29)
{
m_IsBeginGame=FALSE;
if (IDYES==MessageBox("对不起!您输了!\n是否重新开始游戏?","失败",MB_YESNO |MB_ICONSTOP))
{
OnMeunStart();
}
return;
}
else
return;
}
}
else if (RIGHTDOWN==point)
{
if (m_sOB[0]->pt.y==19 || m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state==TRUE /*|| m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state==TRUE*/)
{
m_ptFlag=LEFTDOWN;
if (m_sOB[0]->pt.x+1>28 || m_sOB[0]->pt.y+1>19)
{
return;
}
if (m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].clr=0;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state=FALSE;
}
// if(m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state==TRUE)
// {
// m_Scores++;
// m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].clr=0;
// m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state=FALSE;
// }
return;
}
if (m_sOB[0]->pt.x==29 || m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE || m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state==TRUE)
{
m_ptFlag=RIGHTUP;
if (m_sOB[0]->pt.y+1>19)
{
return;
}
else if(m_sOB[0]->pt.x<28)
{
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state=FALSE;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].clr=0;
}
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state=FALSE;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].clr=0;
}
return;
}
else if (m_sOB[0]->pt.x==29)
{
m_IsBeginGame=FALSE;
if (IDYES==MessageBox("对不起!您输了!\n是否重新开始游戏?","失败",MB_YESNO |MB_ICONSTOP))
{
OnMeunStart();
}
return;
}
else
return;
}
}
clr=m_sOB[0]->clr;
m_sOB[0]->state=FALSE;
m_sOB[0]=&m_Matrix[ptTemp.x][ptTemp.y];
m_sOB[0]->state=TRUE;
m_sOB[0]->clr=clr;
if (ROW*COL==m_Scores)
{
m_IsBeginGame=FALSE;
if (IDYES==MessageBox("恭喜!您赢了!\n是否重新开始游戏?","成功",MB_YESNO | MB_ICONEXCLAMATION ))
{
OnMeunStart();
}
}
}
void CBitmapBrowserDlg::fnRenderScene()
{
CDC *pDC=GetDC();
CDC comDC;
comDC.CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC,m_rectClient.Width(),m_rectClient.Height());
comDC.SelectObject(&bitmap);
if (m_IsOpenbmp)
{
CDC comDC1;
comDC1.CreateCompatibleDC(pDC);
BITMAP bm;
m_bitmap.GetBitmap(&bm);
comDC1.SelectObject(&m_bitmap);
comDC.StretchBlt(10,10,m_rectClient.Width()-20,m_rectClient.Height()-20,\
&comDC1,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
CPen penBlue;
penBlue.CreatePen(PS_SOLID,1,RGB(0,0,150));
CPen *pOldPen=comDC.SelectObject(&penBlue);
CBrush *brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CBrush *pOldBrush=comDC.SelectObject(brush);
comDC.SetBkMode(TRANSPARENT);
comDC.SetTextColor(RGB(255,0,0));
CString strTemp;
strTemp.Format("\t\t碰碰乐\t\t速度:%d 分数:%d",m_Velocity,m_Scores);
comDC.DrawText(strTemp,strlen(strTemp),&CRect(m_rectClient.left+10,m_rectClient.top+10,\
m_rectClient.right,m_rectClient.top+40),DT_CENTER|DT_EXPANDTABS);
comDC.Rectangle(m_rectClient.left+10,m_rectClient.top+50,m_rectClient.right-10,m_rectClient.bottom-10);
CPen penYellow;
penYellow.CreatePen(PS_SOLID,1,RGB(255,255,0));
comDC.SelectObject(&penYellow);
comDC.MoveTo(m_rectClient.left,m_rectClient.top+40);
comDC.LineTo(m_rectClient.right,m_rectClient.top+40);
comDC.SelectObject(&penBlue);
if(m_IsBeginGame)
for (int kk=0;kk<30;kk++)
for (int k=0;k<20;k++)
{
if (m_Matrix[kk][k].state)
comDC.FillSolidRect(m_rectClient.left+10+20*m_Matrix[kk][k].pt.y,
m_rectClient.top+50+20*m_Matrix[kk][k].pt.x,
20,
20,
m_Matrix[kk][k].clr);
}
for (int i=1;i<30;i++)
{
comDC.MoveTo(m_rectClient.left+10,m_rectClient.top+50+20*i);
comDC.LineTo(m_rectClient.right-10,m_rectClient.top+50+20*i);
}
for (int j=1;j<20;j++)
{
comDC.MoveTo(m_rectClient.left+10+20*j,m_rectClient.top+50);
comDC.LineTo(m_rectClient.left+10+20*j,m_rectClient.bottom-10);
}
pDC->BitBlt(0,0,m_rectClient.Width(),m_rectClient.Height(),&comDC,0,0,SRCCOPY);
comDC.SelectObject(pOldPen);
comDC.SelectObject(pOldBrush);
ReleaseDC(pDC);
}
void CBitmapBrowserDlg::OnMenuChoosepic()
{
// TODO: Add your command handler code here
CFileDialog fodlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"BITMAP FILES|*.bmp|ALL FILES|*.*||");
if(IDOK==fodlg.DoModal())
{
m_strFileName=fodlg.GetPathName();
m_hbmp=(HBITMAP)LoadImage(AfxGetApp()->m_hInstance,m_strFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
m_bitmap.Detach();
m_bitmap.Attach(m_hbmp);
m_IsOpenbmp=TRUE;
// CString strtemp;
// strtemp.Format("Width=%d\tHeight=%d",m_rectClient.Width(),m_rectClient.Height());
// MessageBox(strtemp);
Invalidate();
}
}
void CBitmapBrowserDlg::OnMenuSetting()
{
// TODO: Add your command handler code here
CSettingDlg dlg;
dlg.m_row=ROW;
dlg.m_col=COL;
dlg.m_velocity=m_Velocity;
dlg.m_cheat=m_IsCheat;
if (IDOK==dlg.DoModal())
{
ROW=dlg.m_row;
COL=dlg.m_col;
m_Velocity=dlg.m_velocity;
m_IsCheat=dlg.m_cheat;
OnMeunStart();
}
}
void CBitmapBrowserDlg::RandHeadMoving(CPoint point)
{
if (!m_IsBeginGame || m_IsPauseGame)
{
return;
}
m_ptFlag=point;
CPoint ptTemp;
COLORREF clr;
ptTemp=m_sOB[0]->pt+point;
if (LEFTUP==point)
{
if (m_sOB[0]->pt.y==0 || m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].state==TRUE)
{
m_ptFlag=RIGHTUP;
if (m_sOB[0]->pt.y-1<0)
{
return;
}
if(m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].clr=0;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].state=FALSE;
}
return;
}
if (m_sOB[0]->pt.x==0 || m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].state==TRUE)
{
m_ptFlag=LEFTDOWN;
if (m_sOB[0]->pt.x-1<0)
{
return;
}
if(m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].clr=0;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].state=FALSE;
}
return;
}
if (m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y-1].state==TRUE)
{
if (rand()%2)
{
m_ptFlag=RIGHTUP;
}
else
{
m_ptFlag=LEFTDOWN;
}
if (m_sOB[0]->pt.x-1<0 || m_sOB[0]->pt.y-1<0)
{
return;
}
m_Scores++;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y-1].clr=0;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y-1].state=FALSE;
return;
}
}
else if (RIGHTUP==point)
{
if (m_sOB[0]->pt.x==0 || m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].state==TRUE /*|| m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y+1].state==TRUE*/)
{
m_ptFlag=RIGHTDOWN;
if (m_sOB[0]->pt.x-1<0)
{
return;
}
if(m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].clr=0;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y].state=FALSE;
}
return;
}
if (m_sOB[0]->pt.y==19 || m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state==TRUE /*|| m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y+1].state==TRUE*/)
{
m_ptFlag=LEFTUP;
if (m_sOB[0]->pt.y+1>19)
{
return;
}
if (m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].clr=0;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state=FALSE;
}
return;
}
if (m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y+1].state==TRUE)
{
if (rand()%2)
{
m_ptFlag=LEFTUP;
}
else
{
m_ptFlag=RIGHTDOWN;
}
if (m_sOB[0]->pt.x-1<0 || m_sOB[0]->pt.y+1>19)
{
return;
}
m_Scores++;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y+1].clr=0;
m_Matrix[m_sOB[0]->pt.x-1][m_sOB[0]->pt.y+1].state=FALSE;
return;
}
}
else if (LEFTDOWN==point)
{
if (m_sOB[0]->pt.y==0 || m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].state==TRUE)
{
m_ptFlag=RIGHTDOWN;
if (m_sOB[0]->pt.y-1<0)
{
return;
}
if (m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].clr=0;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y-1].state=FALSE;
}
return;
}
if (m_sOB[0]->pt.x==29 || m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE)
{
m_ptFlag=LEFTUP;
if(m_sOB[0]->pt.x<28)
{
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state=FALSE;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].clr=0;
}
return;
}
else if (m_sOB[0]->pt.x==29)
{
m_IsBeginGame=FALSE;
if (IDYES==MessageBox("对不起!您输了!\n是否重新开始游戏?","失败",MB_YESNO |MB_ICONSTOP))
{
OnMeunStart();
}
return;
}
else
return;
}
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y-1].state==TRUE)
{
if (rand()%2)
{
m_ptFlag=LEFTUP;
}
else
{
m_ptFlag=RIGHTDOWN;
}
if (m_sOB[0]->pt.x+1>28 || m_sOB[0]->pt.y-1<0)
{
return;
}
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y-1].clr=0;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y-1].state=FALSE;
return;
}
}
else if (RIGHTDOWN==point)
{
if (m_sOB[0]->pt.y==19 || m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state==TRUE)
{
m_ptFlag=LEFTDOWN;
if (m_sOB[0]->pt.y+1>19)
{
return;
}
if (m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].clr=0;
m_Matrix[m_sOB[0]->pt.x][m_sOB[0]->pt.y+1].state=FALSE;
}
return;
}
if (m_sOB[0]->pt.x==29 || m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE /*|| m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state==TRUE*/)
{
m_ptFlag=RIGHTUP;
if(m_sOB[0]->pt.x<28)
{
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state==TRUE)
{
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].state=FALSE;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y].clr=0;
}
return;
}
else if (m_sOB[0]->pt.x==29)
{
m_IsBeginGame=FALSE;
if (IDYES==MessageBox("对不起!您输了!\n是否重新开始游戏?","失败",MB_YESNO |MB_ICONSTOP))
{
OnMeunStart();
}
return;
}
else
return;
}
if (m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state==TRUE)
{
if (rand()%2)
{
m_ptFlag=RIGHTUP;
}
else
{
m_ptFlag=LEFTDOWN;
}
if (m_sOB[0]->pt.x+1>28 || m_sOB[0]->pt.y+1>19)
{
return;
}
m_Scores++;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].clr=0;
m_Matrix[m_sOB[0]->pt.x+1][m_sOB[0]->pt.y+1].state=FALSE;
return;
}
}
clr=m_sOB[0]->clr;
m_sOB[0]->state=FALSE;
m_sOB[0]=&m_Matrix[ptTemp.x][ptTemp.y];
m_sOB[0]->state=TRUE;
m_sOB[0]->clr=clr;
if (ROW*COL==m_Scores)
{
m_IsBeginGame=FALSE;
if (IDYES==MessageBox("恭喜!您赢了!\n是否重新开始游戏?","成功",MB_YESNO | MB_ICONEXCLAMATION ))
{
OnMeunStart();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -