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();
}