您的位置:首页精文荟萃破解文章 → 贪吃蛇的算法分析(3)

贪吃蛇的算法分析(3)

时间:2004/10/15 0:59:00来源:本站整理作者:蓝点我要评论(0)

 

WormLink


贪吃蛇是由一节一节组成的。因为它经常有一些节连成一条直线形成段,所以这是一种相对有效的方法来保存整个蛇。[X,Y]表示段头部的坐标,然后段的头部开始按照方向向后画若干节。(段的头尾和蛇的头尾不是一个概念)


下面代码段是WormLink中的段得属性:






    // 段头部坐标


    private int x, y;


    // 段长度


    private int len;


    // 移动方向


    private byte dir;


 


下面重点介绍几个重要函数:


l         public void decreaseLength()


这是从段的头部减少一格






// 首先段的总长度减少1


len--;


    switch (dir) { // 不同的方向左边的改变也不一样


    case Worm.LEFT:


        x--;     break;


    case Worm.RIGHT:


        x++;     break;


    case Worm.UP:


        y--;     break;


    case Worm.DOWN:


        y++;     break;   }


 


l         public boolean contains(int x, int y)


判断所给的坐标[x,y]是否包含在段中






switch (dir) { // 不同的方向判断的方法也不一样


    case Worm.LEFT:


        return ((y == this.y) && ((x <= this.x) && (x >= getEndX())));


    case Worm.RIGHT:


        return ((y == this.y) && ((x >= this.x) && (x <= getEndX())));


    case Worm.UP:


        return ((x == this.x) && ((y <= this.y) && (y >= getEndY())));


    case Worm.DOWN:


        return ((x == this.x) && ((y >= this.y) && (y <= getEndY())));


    }


 


l         public int getEndX()


得到这一段的尾部x坐标(段方向指向的最后一格的坐标)当这段是蛇的头部段时,得到的是头部最前面的坐标






    // 不同的方向判断方法不一样


if (dir == Worm.LEFT)


        return x-len;


    if (dir == Worm.RIGHT)


        return x+len;


    return x;


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程