Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
贪吃蛇的算法分析(3)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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;

 

关于作者:

沈晨,高级程序员,SCJP

www.chenshen.com

[email protected]

August 10, 2003





相关文章

相关软件