当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

象棋编程游戏——悔棋算法

    BingWay原创作品,转载请注明作者和出处。

    http://www.cnblogs.com/lovexyz123/archive/2009/11/02/1594644.html

    “观棋不语真君子,落子无悔大丈夫”这是小时候就知道的一句话。但是进入象棋世界不久的我,还没有形成自己独有的下棋风格;也没有刻意步步为营,落一步子,就考虑好以后很多步应该怎么走。因此,在做几乎所有单机象棋版本都会有的功能——悔棋算法的时候,对人生也进行了一些思考。

    人生的每一步棋,我们不可能都是走对的,但是我们没有悔棋功能,为了以后少走烂着.少牺牲一些本来就不多的棋子,还是要每走一步,停下来思考一下。

    悔棋算法

    public class RegretBack

    {

    public int[] fromIndex=new int[200]; //记录每走一步棋,所动的棋子public int[] toIndex = new int[200]; //记录每走一步棋,所动的棋子

    public Point[] fromPoint=new Point[200];

    public Point[] toPoint=new Point[200];

    public int[] fromPointIndex=new int[200]; //记录当前棋子位置

    public int[] toPointIndex=new int[200];

    public string[] Chess_Text=new string[200]; //存放每一步棋的说明文字

    public int[] signRight=new int[200]; //保存哪方走棋标志

    public bool[] start=new bool[200]; //悔棋操作,要恢复的标志位

    public string[] wrongString=new string[200]; //记录排斥事件的标志

    public bool[] whichFangQianZou = new bool[200];//悔棋操作,要恢复的标志位

    public RegretBack[] b = new RegretBack[200];

    public int activeIndex; //起流动指针作用

    public int tailIndex; //始终指向尾部(刚走完的最后一步)的索引

    public RegretBack()

    {

    this.Initialize();

    }

    public void Initialize()

    {

    //初始化各数组

    for(int i=0;i<200;i++)

    {

    fromIndex[i]=-1; toIndex[i]=-1;

    fromPoint[i].X=-1; fromPoint[i].Y=-1;

    toPoint[i].X=-1; toPoint[i].Y=-1;

    fromPointIndex[i]=-1; toPointIndex[i]=-1;

    }

    for(int i=0;i<200;i++)

    {

    this.Chess_Text[i]="";

    this.signRight[i]=0;

    this.start[i]=false;

    this.wrongString[i]="right";

    this.whichFangQianZou[i]=false;

    this.b[i] = new RegretBack();

    this.b[i].Initialize();

    }

相关内容
赞助商链接