level 4
2l代码
void Cmaze_var05Dlg::OnBnClickedStartgame()
{
CBitmap bitmap3;//移动块
bitmap3.LoadBitmap(IDB_BITMAP3);
CBrush brush3(&bitmap3);
CClientDC dc(this);
int x1=45,y1=55;//与createmaze相同起始位置
if (playState==0){
nowpos.x=a.start.x;
nowpos.y=a.start.y;
dc.FillRect(CRect(x1+a.start.y*10,y1+a.start.x*10,x1+a.start.y*10+10,y1+a.start.x*10+10),&brush3);//标定起始点
playState=1;
}
}
void Cmaze_var05Dlg::itemMove(int state) //用来处理键盘的移动,1234,上下左右
{
int x,y;
int x1=45,y1=55;//与createmaze相同起始位置
CBitmap bitmap2;//路
bitmap2.LoadBitmap(IDB_BITMAP2);
CBrush brush2(&bitmap2);
CBitmap bitmap3;//移动块
bitmap3.LoadBitmap(IDB_BITMAP3);
CBrush brush3(&bitmap3);
CClientDC dc(this);
if(playState==1)
{
switch(state)
{
case 1:x=nowpos.x-1;y=nowpos.y;break;
case 2:x=nowpos.x+1;y=nowpos.y;break;
case 3:x=nowpos.x;y=nowpos.y-1;break;
case 4:x=nowpos.x;y=nowpos.y+1;break;
}
if(a.Map[x][y]!=1)
{
dc.FillRect(CRect(x1+nowpos.y*10,y1+nowpos.x*10,x1+nowpos.y*10+10,y1+nowpos.x*10+10),&brush2);
nowpos.x=x;
nowpos.y=y;
dc.FillRect(CRect(x1+nowpos.y*10,y1+nowpos.x*10,x1+nowpos.y*10+10,y1+nowpos.x*10+10),&brush3);
}
}
if(nowpos.x==a.exit.x && nowpos.y==a.exit.y)
{
//MessageBox(_T("亲,恭喜你你赢了,可以再来一局哟"));
}
}
BOOL Cmaze_var05Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(pMsg->message==WM_KEYDOWN && playState==1) //从这里处理键盘事件
{
if(pMsg->wParam==VK_UP)
{
//up
itemMove(3);
}else
if(pMsg->wParam==VK_DOWN)
{
//down
itemMove(4);
}else
if(pMsg->wParam==VK_LEFT)
{
//left
itemMove(1);
}else
if(pMsg->wParam==VK_RIGHT)
{
//right
itemMove(2);
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
2013年12月23日 13点12分
