Example #1
0
File: pozo.cs Project: vyz/myViz
        /// <summary>
        /// Модификация от 27 мая 2015 года
        /// Заложен 27 мая 2015 года
        /// </summary>
        /// <returns></returns>
        public static pozo Starto()
        {
            pozo reto = new pozo();

            reto.startoinito();
            return(reto);
        }
Example #2
0
 /// <summary>
 /// Class Ctor
 /// </summary>
 public Borda()
 {
     InitializeComponent();
     currentopoza         = pozo.Starto();          ///////ALLLERT
     m_board              = currentopoza.BoardoSet; ///////ALLLERT
     m_ptSelectedCell     = new IntPoint(-1, -1);
     m_bAutoSelection     = true;
     m_strWhitePlayerName = "Player 1";
     m_strBlackPlayerName = "Player 2";
     DesignModeYES        = false;
     InitCell();
 }
Example #3
0
File: pozo.cs Project: vyz/myViz
        /// <summary>
        /// Модификация от 30 июля 2015 года
        /// Заложен 29 июля 2015 года
        /// </summary>
        /// <returns></returns>
        public pozo GetPozoAfterControlMove()
        {
            pozo      reto    = null;
            PozoUtils tmp     = new PozoUtils(pBoard, !whitomv, controllomova.FromField, controllomova.ToField, controllomova.Figura, controllomova.MvType, false);
            Caslo     cafmv   = tmp.RokkoChangeAfterMove(rokko, controllomova);
            int       zenpass = tmp.CanEnpasso(controllomova);
            bool      benpass = (zenpass >= 0);

            if (benpass)   //Превращение из нормального целого поля в специальное короткое для позиции
            {
                zenpass -= (zenpass < 24) ? 16 : 40;
            }
            int ppustomv = pustomv + 1;

            if ((controllomova.Figura & Pieco.PieceMask) == Pieco.Pawn || (controllomova.MvType & MovoTypo.PieceEaten) > 0)
            {
                ppustomv = 0;
            }
            reto = new pozo(tmp.Boardo, tmp.Coloro, cafmv, benpass, zenpass, ppustomv, numbero + (tmp.Coloro ? 1 : 0));
            return(reto);
        }
Example #4
0
 /// <summary>
 /// Class Ctor
 /// </summary>
 public Borda()
 {
     InitializeComponent();
     currentopoza = pozo.Starto();    ///////ALLLERT
     m_board                     = currentopoza.BoardoSet;    ///////ALLLERT
     m_ptSelectedCell            = new IntPoint(-1, -1);
     m_bAutoSelection            = true;
     m_strWhitePlayerName        = "Player 1";
     m_strBlackPlayerName        = "Player 2";
     DesignModeYES = false;
     InitCell();
 }
Example #5
0
File: pozo.cs Project: vyz/myViz
 /// <summary>
 /// Модификация от 30 июля 2015 года
 /// Заложен 29 июля 2015 года
 /// </summary>
 /// <returns></returns>
 public pozo GetPozoAfterControlMove()
 {
     pozo reto = null;
     PozoUtils tmp = new PozoUtils(pBoard, !whitomv, controllomova.FromField, controllomova.ToField, controllomova.Figura, controllomova.MvType, false);
     Caslo cafmv = tmp.RokkoChangeAfterMove(rokko, controllomova);
     int zenpass = tmp.CanEnpasso(controllomova);
     bool benpass = (zenpass >= 0);
     if (benpass) { //Превращение из нормального целого поля в специальное короткое для позиции
         zenpass -= (zenpass < 24) ? 16 : 40;
         }
     int ppustomv = pustomv + 1;
     if( (controllomova.Figura & Pieco.PieceMask) == Pieco.Pawn || (controllomova.MvType & MovoTypo.PieceEaten) > 0 ) { ppustomv = 0; }
     reto = new pozo(tmp.Boardo, tmp.Coloro, cafmv, benpass, zenpass, ppustomv, numbero + (tmp.Coloro ? 1 : 0));
     return reto;
 }
Example #6
0
File: pozo.cs Project: vyz/myViz
 /// <summary>
 /// Модификация от 27 мая 2015 года
 /// Заложен 27 мая 2015 года
 /// </summary>
 /// <returns></returns>
 public static pozo Starto()
 {
     pozo reto = new pozo();
     reto.startoinito();
     return reto;
 }
Example #7
0
        /// <summary>
        /// Модификация от 22 октября 2015 года
        /// Заложен июнь 2015 года
        /// </summary>
        /// <returns></returns>
        public bool MovaControlling()
        {
            bool          reto = false;
            pozo          tp   = null;
            List <string> variantosy;
            string        commento;

            string aa = GetAttro(gmAttro.Fen);

            if (aa == string.Empty)
            {
                tp            = pozo.Starto();
                flagFromStart = true;
            }
            else
            {
            }
            FillMainMoves();
            lFactMoves = new List <Mova>();
            lPozos     = new List <pozo>();

            lPozos.Add(tp);
            foreach (string minimov in onlymainmoves)
            {
                if (minimov.StartsWith("{"))   //Это комментарий из текста, добавляем его непосредственно к позиции
                                               //И в лист комментов с указанием ссылки на позу для обратного восстановления из сохраненного гамо
                {
                    flagComments = true;
                    string doba = minimov.Substring(1);
                }
                else if (minimov.StartsWith("$"))     //Это строка тайминга. Добавляем ее в лист таймингов с указанием позиции.
                                                      //Так как возможен неполный, а только выборочный тайминг.
                {
                    flagTiming = true;
                    if (lTimos == null)
                    {
                        lTimos = new List <gTimo>();
                    }
                    string timo     = minimov.Substring(1);
                    int    curmove  = tp.NumberMove;
                    bool   curcolor = tp.IsQueryMoveWhite;
                    gTimo  curTimo  = new gTimo(curmove.ToString(), curcolor ? "w" : "b", timo);
                    lTimos.Add(curTimo);
                }
                else if (tp.ContraMov(minimov))
                {
                    lFactMoves.Add(tp.GetFactMoveFilled());
                    tp = tp.GetPozoAfterControlMove();
                    lPozos.Add(tp);
                }
                else     //раз дошли досюдова, то ход был, но он невозможный - фиксирукм это в гаму
                {
                    flagImpossibleMove = true;
                    strimpossiblemove  = string.Format("Невозможный ход {0} после {1} хода {2}", minimov, tp.NumberMove, !tp.IsQueryMoveWhite ? "белых" : "чёрных");
                }
            }
            if (lFactMoves.Count > 0)
            {
                reto = true;
                if (Qavo == string.Empty)
                {
                    SetAttro(gmAttro.PlyCount, lFactMoves.Count.ToString());
                }
            }
            return(reto);
        }