コード例 #1
0
ファイル: pozo.cs プロジェクト: vyz/myViz
 /// <summary>
 /// Модификация от 27 мая 2015 года
 /// Заложен 27 мая 2015 года
 /// </summary>
 private void startoinito()
 {
     for (int i = 47; i >= 16; i--)
     {
         pBoard[i] = Pieco.None;
     }
     for (int i = 55; i >= 48; i--)
     {
         pBoard[i] = Pieco.Pawn | Pieco.Black;
     }
     for (int i = 15; i >= 8; i--)
     {
         pBoard[i] = Pieco.Pawn | Pieco.White;
     }
     pBoard[63] = pBoard[56] = Pieco.Rook | Pieco.Black;
     pBoard[62] = pBoard[57] = Pieco.Knight | Pieco.Black;
     pBoard[61] = pBoard[58] = Pieco.Bishop | Pieco.Black;
     pBoard[60] = Pieco.Queen | Pieco.Black;
     pBoard[59] = Pieco.King | Pieco.Black;
     pBoard[7]  = pBoard[0] = Pieco.Rook | Pieco.White;
     pBoard[6]  = pBoard[1] = Pieco.Knight | Pieco.White;
     pBoard[5]  = pBoard[2] = Pieco.Bishop | Pieco.White;
     pBoard[4]  = Pieco.Queen | Pieco.White;
     pBoard[3]  = Pieco.King | Pieco.White;
     whitomv    = true;
     rokko      = Caslo.KingWhite | Caslo.QueenWhite | Caslo.KingBlack | Caslo.QueenBlack;
     enpasso    = false;
     enfield    = 0;
     pustomv    = 0;
     numbero    = 1;
 }
コード例 #2
0
ファイル: pozo.cs プロジェクト: vyz/myViz
 /// <summary>
 /// Модификация от 29 июля 2015 года
 /// Заложен 29 июля 2015 года
 /// </summary>
 /// <param name="ppb"></param>
 /// <param name="coloro"></param>
 /// <param name="prok"></param>
 /// <param name="penp"></param>
 /// <param name="penf"></param>
 /// <param name="ppmv"></param>
 /// <param name="pnum"></param>
 public pozo(Pieco[] ppb, bool coloro, Caslo prok, bool penp, int penf, int ppmv, int pnum)
 {
     pBoard = new Pieco[64];
     for (int i = 0; i < 64; i++) {
         pBoard[i] = ppb[i];
         }
     whitomv = coloro;
     rokko = prok;
     enpasso = penp;
     enfield = penf;
     pustomv = ppmv;
     numbero = pnum;
     qava = -1;
     pzu = null;
     controllomova = null;
 }
コード例 #3
0
ファイル: pozo.cs プロジェクト: vyz/myViz
 /// <summary>
 /// Модификация от 29 июля 2015 года
 /// Заложен 29 июля 2015 года
 /// </summary>
 /// <param name="ppb"></param>
 /// <param name="coloro"></param>
 /// <param name="prok"></param>
 /// <param name="penp"></param>
 /// <param name="penf"></param>
 /// <param name="ppmv"></param>
 /// <param name="pnum"></param>
 public pozo(Pieco[] ppb, bool coloro, Caslo prok, bool penp, int penf, int ppmv, int pnum)
 {
     pBoard = new Pieco[64];
     for (int i = 0; i < 64; i++)
     {
         pBoard[i] = ppb[i];
     }
     whitomv       = coloro;
     rokko         = prok;
     enpasso       = penp;
     enfield       = penf;
     pustomv       = ppmv;
     numbero       = pnum;
     qava          = -1;
     pzu           = null;
     controllomova = null;
 }
コード例 #4
0
ファイル: pozo.cs プロジェクト: 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);
        }
コード例 #5
0
ファイル: PozoUtils.cs プロジェクト: vyz/myViz
 /// <summary>
 /// Модификация от 3 августа 2015 года
 /// Заложен 29 июля 2015 года
 /// </summary>
 /// <param name="old"></param>
 /// <param name="pmv"></param>
 /// <returns></returns>
 public Caslo RokkoChangeAfterMove(Caslo old, Mova pmv)
 {
     Caslo reto = old;
     if (pmv.MvType == MovoTypo.Castle || (pmv.Figura & Pieco.PieceMask) == Pieco.King) {
         if (whitomv) { //Это уже инверсия. Сейчас ход противника, а в pmv ещё предыдущий ход
             if ((reto & Caslo.KingBlack) > 0) { reto ^= Caslo.KingBlack; }
             if ((reto & Caslo.QueenBlack ) > 0) { reto ^= Caslo.QueenBlack; }
         } else {
             if ((reto & Caslo.KingWhite) > 0) { reto ^= Caslo.KingWhite; }
             if ((reto & Caslo.QueenWhite) > 0) { reto ^= Caslo.QueenWhite; }
             }
     } else if ((pmv.Figura & Pieco.PieceMask) == Pieco.Rook) {
         if (whitomv) {
             if (pmv.FromField == 56) {
                 if ((reto & Caslo.KingBlack) > 0) { reto ^= Caslo.KingBlack; }
                 }
             if (pmv.FromField == 63) {
                 if ((reto & Caslo.QueenBlack) > 0) { reto ^= Caslo.QueenBlack; }
                 }
         } else {
             if (pmv.FromField == 0) {
                 if ((reto & Caslo.KingWhite) > 0) { reto ^= Caslo.KingWhite; }
                 }
             if (pmv.FromField == 7) {
                 if ((reto & Caslo.QueenWhite) > 0) { reto ^= Caslo.QueenWhite; }
                 }
             }
         }
     return reto;
 }
コード例 #6
0
ファイル: PozoUtils.cs プロジェクト: vyz/myViz
 public PozoUtils(Pieco[] pp, bool pcolor, Caslo pr, bool v, int penp)
 {
     pBoard = pp;
     whitomv = pcolor;
     rokko = pr;
     enpasso = v;
     enfield = penp;
 }
コード例 #7
0
ファイル: pozo.cs プロジェクト: vyz/myViz
 /// <summary>
 /// Модификация от 27 мая 2015 года
 /// Заложен 27 мая 2015 года
 /// </summary>
 private void startoinito()
 {
     for(int i = 47; i >= 16; i--) {
         pBoard[i] = Pieco.None;
         }
     for (int i = 55; i >= 48; i--) {
         pBoard[i] = Pieco.Pawn | Pieco.Black;
         }
     for (int i = 15; i >= 8; i--) {
         pBoard[i] = Pieco.Pawn | Pieco.White;
         }
     pBoard[63] = pBoard[56] = Pieco.Rook | Pieco.Black;
     pBoard[62] = pBoard[57] = Pieco.Knight | Pieco.Black;
     pBoard[61] = pBoard[58] = Pieco.Bishop | Pieco.Black;
     pBoard[60] = Pieco.Queen | Pieco.Black;
     pBoard[59] = Pieco.King | Pieco.Black;
     pBoard[7] = pBoard[0] = Pieco.Rook | Pieco.White;
     pBoard[6] = pBoard[1] = Pieco.Knight | Pieco.White;
     pBoard[5] = pBoard[2] = Pieco.Bishop | Pieco.White;
     pBoard[4] = Pieco.Queen | Pieco.White;
     pBoard[3] = Pieco.King | Pieco.White;
     whitomv = true;
     rokko = Caslo.KingWhite | Caslo.QueenWhite | Caslo.KingBlack | Caslo.QueenBlack;
     enpasso = false;
     enfield = 0;
     pustomv = 0;
     numbero = 1;
 }