protected Chess(ChessFactory factory, GameColor color, ChessType type) { Factory = factory; Color = color; Type = type; Sprite = Factory.Skin[color, type].Clone(); }
/// <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(); } } }
public Game(Skin skin) { Desk = new Desk(); Factory = new ChessFactory(skin); GameState = State.None; }
public ChessKnight(ChessFactory factory, GameColor color) : base(factory, color, ChessType.Knight) { }
public ChessRook(ChessFactory factory, GameColor color) : base(factory, color, ChessType.Rook) { }
public ChessQueen(ChessFactory factory, GameColor color) : base(factory, color, ChessType.Queen) { }
public ChessPawn(ChessFactory factory, GameColor color) : base(factory, color, ChessType.Pawn) { }
public ChessKing(ChessFactory factory, GameColor color) : base(factory, color, ChessType.King) { }
public ChessBishop(ChessFactory factory, GameColor color) : base(factory, color, ChessType.Bishop) { }