张运涛

c++

   :: 首页 :: 联系 :: 聚合  :: 管理

常用链接

留言簿(4)

搜索

  •  

最新评论

做了半天,终于把贪吃蛇做了,其实就写的时间不多,就界面麻烦了一会,该死的bug,每次怎么都差不多啊,都是数组索引这低级的东西,烦火啊!!!每次调试和写的时间相当,唉,也许调试能力不行。
用了二个数组,一个记录蛇的长度,一个记录拐点的坐标。很容易写。发现宏的能力还是很方便啊,以前不怎么喜欢用,对别人来说代码可读性差,但对自己来说,代码很简洁;

#define UP  CPoint(0,-1)
#define DOWN CPoint(0,1)
#define LEFT CPoint(-1,0)
#define RIGHT CPoint(1,0)

void Csnake::StepNext()
{
    
int i,j;
    
//直线走
    if (m_lCorners.size()==0)
    
{
        
for (i=0;i< m_vSnake.size();i++)
            m_vSnake[i]
+=m_curDirection;
    }
 
    
else
    
{
        
//先前的方向
        Direction predir=m_curDirection;

        j
=m_lCorners.size()-1;
        
for (i=0;i< m_vSnake.size();i++)
        
{
            
if(m_vSnake[i]==m_lCorners[j].loc)
            
{
                m_vSnake[i]
+=predir;
                predir
=m_lCorners[j].preDir;
                
                
if(i==m_vSnake.size()-1)
                
{
                    m_lCorners.erase(m_lCorners.begin());
                    
return;
                }


                
if(j>0)
                    j
--;
            }

            
else
                m_vSnake[i]
+=predir;
        }

    }

    
//吃到食物
    if( m_vSnake[0]==m_curFood)
    
{
        
if (m_lCorners.size()==0)
            m_vSnake.push_back(m_vSnake[m_vSnake.size()
-1]-m_curDirection);
        
else
            m_vSnake.push_back(m_vSnake[m_vSnake.size()
-1]-m_lCorners[0].preDir);
        m_hasFood
=false;
    }

    CreateFood();
}
posted on 2010-05-24 20:00 张运涛 阅读(272) 评论(0)  编辑 收藏 引用 所属分类: Progress

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理