关于贪吃蛇移动的问题 万分火急 在线等待

Cjslong 2010-08-07 02:18:40
小弟初学VC 想做个贪吃蛇

发现一个问题:

当蛇吃到豆子时增加一个节点 可是没吃到时会减少有一个节点

也就是说在某一瞬间 如果吃到豆子增在一节点,如果下一秒钟没遇到豆子,这个增加的豆子据仍然消失了 蛇身恢复原状

在下一秒 即使没吃到也不继续减少

不知道什么地方错了

请高人指点一下 迷津

//判断是否吃到食物
bool CGreedSnake::EateFood( CFood &food )
{
vector< CSnakeNode >::iterator iter = m_greedsnake.begin();

if( iter->m_xPose==food.m_food[food.m_index].GetLinePoisition() && iter->m_yPose==food.m_food[food.m_index].GetRowPoisition() )
{
CSnakeNode tempnode = m_greedsnake.back();//蛇身的尾节点

switch( m_direction )
{
case ED_UP:
tempnode.m_yPose++;
break;
case ED_DOWN:
tempnode.m_yPose--;
break;
case ED_LEFT:
tempnode.m_xPose--;
break;
case ED_RIGHT:
tempnode.m_xPose++;
break;
}

m_greedsnake.push_back( tempnode );

return true;//吃到食物
}
else
return false;//未吃到食物
}


//重画

void CGreedSnake::DrawSnake( CDC *pDC )
{


for( vector< CSnakeNode >::size_type t=0; t!=m_greedsnake.size(); t++ )
m_greedsnake[t].DrawSnakeNode( m_greedsnake[t].m_xPose, m_greedsnake[t].m_yPose, pDC );


}

初始时有两节,吃到食物时变成三节,下一秒又恢复成了两节

调试时 好像发现吃到食物后的 t还是2

为什么没变呢?如果 t没变的话 吃到的一瞬间 第三节又从哪来的呢?

实在迷糊了 VC新手诚请各位前辈指点

分数不多 还请见谅
...全文
92 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧