示例#1
0
 protected Chess(ChessFactory factory, GameColor color, ChessType type)
 {
     Factory = factory;
     Color   = color;
     Type    = type;
     Sprite  = Factory.Skin[color, type].Clone();
 }
示例#2
0
        /// <summary>
        /// Устанавливает начальную позицию фигур на доске
        /// </summary>
        private void SetStandartPosition()
        {
            string[] Verticals = new string[] { "A", "B", "C", "D", "E", "F", "G", "H" };
            string   P         = "R N B Q K B N R " + "P P P P P P P P " + "P P P P P P P P " + "R N B Q K B N R ";

            string[] Contents = P.Split(' ');
            int      VNum, HNum; // Номера текущей горизонтали и вертикали в цикле

            for (int i = 0; i < Position.Length; i++)
            {
                VNum = i % 8;               // получение номера вертикали и горизонтали
                HNum = Math.Abs(i / 8 - 8); // получение номера вертикали и горизонтали
                string Coordinate = Verticals[VNum].ToString() + HNum.ToString();
                Position[i] = new Cell(Coordinate);
                if (HNum == 1 || HNum == 2)                                                                             // на первой и второй горизонталях располагаются белые фигуры
                {
                    Position[i].ChangeContent(ChessFactory.Create(Coordinate, Convert.ToChar(Contents[i - 32]), true)); // вычитание нужно потому что 1 и 2 горизонтали находятся в конце массива Position. 32 - размер половины массива
                }
                else if (HNum == 7 || HNum == 8)                                                                        // на седьмой и восьмой горизонталях располагаются чёрные фигуры
                {
                    Position[i].ChangeContent(ChessFactory.Create(Coordinate, Convert.ToChar(Contents[i]), false));     // 7 и 8 горизонтали находятся в начале, вычитание не нужно
                }
                else // на всех остальных горизонталях фигур нет
                {
                    Position[i].VoidContent();
                }
            }
        }
示例#3
0
 public Game(Skin skin)
 {
     Desk      = new Desk();
     Factory   = new ChessFactory(skin);
     GameState = State.None;
 }
示例#4
0
 public ChessKnight(ChessFactory factory, GameColor color)
     :   base(factory, color, ChessType.Knight)
 {
 }
示例#5
0
 public ChessRook(ChessFactory factory, GameColor color)
     :   base(factory, color, ChessType.Rook)
 {
 }
示例#6
0
 public ChessQueen(ChessFactory factory, GameColor color)
     :   base(factory, color, ChessType.Queen)
 {
 }
示例#7
0
 public ChessPawn(ChessFactory factory, GameColor color)
     :   base(factory, color, ChessType.Pawn)
 {
 }
示例#8
0
 public ChessKing(ChessFactory factory, GameColor color)
     :   base(factory, color, ChessType.King)
 {
 }
示例#9
0
 public ChessBishop(ChessFactory factory, GameColor color)
     :   base(factory, color, ChessType.Bishop)
 {
 }