3,881
社区成员
发帖
与我相关
我的任务
分享
void CSnakeView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CDC *pDC=GetDC();
CString soure;
/*//////////////////////////加速////////////////////////////*/
/*////////*/if(snake[0].l==2)SetTimer(1,370,NULL);/*////////*/
/*////////*/if(snake[0].l==3)SetTimer(1,270,NULL);/*////////*/
/*////////*/if(snake[0].l==6)SetTimer(1,200,NULL);/*////////*/
/*////////*/if(snake[0].l==9)SetTimer(1,100,NULL);/*////////*/
/*/////////////////////////加速/////////////////////////////*/
soure.Format("真可惜,你得到了:%d分!",(snake[0].l-3)*10);
///////////////////////判断是否撞边界/////////////////////////////////////
if(snake[0].x*20<=37||snake[0].y*20<=37||snake[0].x*20>=462||snake[0].y*20>=462)
{
KillTimer(1);
AfxMessageBox(soure);
s=0;
}
////////////////////////////判断撞蛇身////////////////////////////////////
if(snake[0].l>3)
for(int sn=snake[0].l-1;sn>0;sn--)
{
if(snake[0].x*20==snake[sn].x*20&&snake[0].y*20==snake[sn].y*20)
{
KillTimer(1);
AfxMessageBox(soure);
s=0;
}
}
///////////////////////////////////////////////////////////////////////////
pDC->SelectStockObject(WHITE_PEN);
pDC->Rectangle(snake[snake[0].l-1].x*20,snake[snake[0].l-1].y*20,(snake[snake[0].l-1].x+1)*20,(snake[snake[0].l-1].y+1)*20);
for(int i=snake[0].l-1;i>0;i--)
{
snake[i].x=snake[i-1].x;
snake[i].y=snake[i-1].y;
}
//////////得到行走方向/////////////////
if(snake[0].r==1)snake[0].y--;
if(snake[0].r==2)snake[0].y++;
if(snake[0].r==3)snake[0].x--;
if(snake[0].r==4)snake[0].x++;
pDC->SelectStockObject(BLACK_PEN);
CBrush DrawBrush=(RGB(255,0,0));
CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);
pDC->Rectangle(snake[0].x*20,snake[0].y*20,(snake[0].x+1)*20,(snake[0].y+1)*20);
pDC->SelectObject(DrawBrush);
////////////判断吃豆,如果碰撞则吃豆///////////////////
if(snake[0].x*20==food.x*20&&snake[0].y*20==food.y*20)
{
snake[0].l++;
food.isfood=1;
snake[snake[0].l-1].x=snake[snake[0].l-2].x;
snake[snake[0].l-1].y=snake[snake[0].l-2].y;
}
///////////////如果"豆"被吃掉则重新生成///////////////////
if(food.isfood==1)
{
srand((unsigned)time(NULL));
do
{
for(int isfo=snake[0].l-1;isfo>=0;isfo--)
if(snake[0].x*20==snake[isfo].x*20&&snake[0].y*20==snake[isfo].y*20)
{
food.x=rand()%25;
food.y=rand()%25;
}
}while(food.x*20<70||food.y*20<70||food.x*20>430||food.y*20>430);
pDC->Rectangle(food.x*20,food.y*20,(food.x+1)*20,(food.y+1)*20);
food.isfood=0;
}
CView::OnTimer(nIDEvent);
}