/// <summary> /// Модификация от 27 мая 2015 года /// Заложен 27 мая 2015 года /// </summary> /// <returns></returns> public static pozo Starto() { pozo reto = new pozo(); reto.startoinito(); return(reto); }
/// <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(); }
/// <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); }
/// <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; }
/// <summary> /// Модификация от 27 мая 2015 года /// Заложен 27 мая 2015 года /// </summary> /// <returns></returns> public static pozo Starto() { pozo reto = new pozo(); reto.startoinito(); return reto; }
/// <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); }