Exemple #1
0
 public StepPossibility GetStepPossibilities(FigureColor color)
 {
     for (int yfrom = 0; yfrom < 8; yfrom++)
     {
         for (int xfrom = 0; xfrom < 8; xfrom++)
         {
             for (int yto = 0; yto < 8; yto++)
             {
                 for (int xto = 0; xto < 8; xto++)
                 {
                     StepMemento memento = StepWithMemento(xfrom, yfrom, xto, yto, color);
                     if (memento != null)
                     {
                         if (!IsKingChecked(color))
                         {
                             RestoreMemento(memento);
                             return(StepPossibility.Continue);
                         }
                         RestoreMemento(memento);
                     }
                 }
             }
         }
     }
     if (IsKingChecked(color))
     {
         return(StepPossibility.CheckMate);
     }
     return(StepPossibility.StaleMate);
 }
Exemple #2
0
        public bool StepWithoutCheck(int xFrom, int yFrom, int xTo, int yTo, FigureColor color)
        {
            StepMemento memento = StepWithMemento(xFrom, yFrom, xTo, yTo, color);

            if (memento != null && !IsKingChecked(color))
            {
                return(true);
            }
            if (memento != null)
            {
                RestoreMemento(memento);
            }
            return(false);
        }
Exemple #3
0
 public void RestoreMemento(StepMemento memento)
 {
     Figures[memento.FromX, memento.FromY] = Figures[memento.ToX, memento.ToY];
     Figures[memento.ToX, memento.ToY]     = memento.OldAtTo;
 }