public override List <Move> GetAvailableMoves(Tuple <int, int> coords) { List <Move> availableMoves = new List <Move>(); var Layout = GameState.GetGameState(); if (HelperMaths.IsInRange(coords.Item1 - 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 - 2, 0, 7)) { if (Layout[coords.Item1 - 1][coords.Item2 - 2] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 1, coords.Item2 - 2))); } else if (Layout[coords.Item1 - 1][coords.Item2 - 2].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 1, coords.Item2 - 2))); } } if (HelperMaths.IsInRange(coords.Item1 - 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 + 2, 0, 7)) { if (Layout[coords.Item1 - 1][coords.Item2 + 2] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 1, coords.Item2 + 2))); } else if (Layout[coords.Item1 - 1][coords.Item2 + 2].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 1, coords.Item2 + 2))); } } if (HelperMaths.IsInRange(coords.Item1 + 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 - 2, 0, 7)) { if (Layout[coords.Item1 + 1][coords.Item2 - 2] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 1, coords.Item2 - 2))); } else if (Layout[coords.Item1 + 1][coords.Item2 - 2].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 1, coords.Item2 - 2))); } } if (HelperMaths.IsInRange(coords.Item1 + 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 + 2, 0, 7)) { if (Layout[coords.Item1 + 1][coords.Item2 + 2] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 1, coords.Item2 + 2))); } else if (Layout[coords.Item1 + 1][coords.Item2 + 2].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 1, coords.Item2 + 2))); } } //-------------------- if (HelperMaths.IsInRange(coords.Item1 - 2, 0, 7) && HelperMaths.IsInRange(coords.Item2 - 1, 0, 7)) { if (Layout[coords.Item1 - 2][coords.Item2 - 1] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 2, coords.Item2 - 1))); } else if (Layout[coords.Item1 - 2][coords.Item2 - 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 2, coords.Item2 - 1))); } } if (HelperMaths.IsInRange(coords.Item1 + 2, 0, 7) && HelperMaths.IsInRange(coords.Item2 - 1, 0, 7)) { if (Layout[coords.Item1 + 2][coords.Item2 - 1] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 2, coords.Item2 - 1))); } else if (Layout[coords.Item1 + 2][coords.Item2 - 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 2, coords.Item2 - 1))); } } if (HelperMaths.IsInRange(coords.Item1 - 2, 0, 7) && HelperMaths.IsInRange(coords.Item2 + 1, 0, 7)) { if (Layout[coords.Item1 - 2][coords.Item2 + 1] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 2, coords.Item2 + 1))); } else if (Layout[coords.Item1 - 2][coords.Item2 + 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 2, coords.Item2 + 1))); } } if (HelperMaths.IsInRange(coords.Item1 + 2, 0, 7) && HelperMaths.IsInRange(coords.Item2 + 1, 0, 7)) { if (Layout[coords.Item1 + 2][coords.Item2 + 1] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 2, coords.Item2 + 1))); } else if (Layout[coords.Item1 + 2][coords.Item2 + 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 2, coords.Item2 + 1))); } } return(availableMoves); }
public override List <Move> GetAvailableMoves(Tuple <int, int> coords) { List <Move> availableMoves = new List <Move>(); var Layout = GameState.GetGameState(); for (int i = 1; i < 8; i++) { if (HelperMaths.IsInRange(coords.Item1 - i, 0, 7) && HelperMaths.IsInRange(coords.Item2 - i, 0, 7)) { if (Layout[coords.Item1 - i][coords.Item2 - i] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - i, coords.Item2 - i))); } else { if (Layout[coords.Item1 - i][coords.Item2 - i].PieceColor == this.PieceColor) { break; } availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - i, coords.Item2 - i))); if (Layout[coords.Item1 - i][coords.Item2 - i].PieceColor != this.PieceColor) { break; } } } else { break; } } for (int i = 1; i < 8; i++) { if (HelperMaths.IsInRange(coords.Item1 - i, 0, 7) && HelperMaths.IsInRange(coords.Item2 + i, 0, 7)) { if (Layout[coords.Item1 - i][coords.Item2 + i] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - i, coords.Item2 + i))); } else { if (Layout[coords.Item1 - i][coords.Item2 + i].PieceColor == this.PieceColor) { break; } availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - i, coords.Item2 + i))); if (Layout[coords.Item1 - i][coords.Item2 + i].PieceColor != this.PieceColor) { break; } } } else { break; } } for (int i = 1; i < 8; i++) { if (HelperMaths.IsInRange(coords.Item1 + i, 0, 7) && HelperMaths.IsInRange(coords.Item2 - i, 0, 7)) { if (Layout[coords.Item1 + i][coords.Item2 - i] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + i, coords.Item2 - i))); } else { if (Layout[coords.Item1 + i][coords.Item2 - i].PieceColor == this.PieceColor) { break; } availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + i, coords.Item2 - i))); if (Layout[coords.Item1 + i][coords.Item2 - i].PieceColor != this.PieceColor) { break; } } } else { break; } } for (int i = 1; i < 8; i++) { if (HelperMaths.IsInRange(coords.Item1 + i, 0, 7) && HelperMaths.IsInRange(coords.Item2 + i, 0, 7)) { if (Layout[coords.Item1 + i][coords.Item2 + i] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + i, coords.Item2 + i))); } else { if (Layout[coords.Item1 + i][coords.Item2 + i].PieceColor == this.PieceColor) { break; } availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + i, coords.Item2 + i))); if (Layout[coords.Item1 + i][coords.Item2 + i].PieceColor != this.PieceColor) { break; } } } else { break; } } return(availableMoves); }
public override List <Move> GetAvailableMoves(Tuple <int, int> coords) { List <Move> availableMoves = new List <Move>(); var Layout = GameState.GetGameState(); if (this.PieceColor.ToString() == "White") { if (HelperMaths.IsInRange(coords.Item1 - 1, 0, 7)) { if (Layout[coords.Item1 - 1][coords.Item2] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 1, coords.Item2))); } } if (HelperMaths.IsInRange(coords.Item1 - 2, 0, 7) && HelperMaths.IsInRange(coords.Item1 - 1, 0, 7)) { if (Layout[coords.Item1 - 2][coords.Item2] == null && Layout[coords.Item1 - 1][coords.Item2] == null && coords.Item1 == 6) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 2, coords.Item2))); } } if (HelperMaths.IsInRange(coords.Item1 - 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 - 1, 0, 7)) { if (Layout[coords.Item1 - 1][coords.Item2 - 1] != null) { if (Layout[coords.Item1 - 1][coords.Item2 - 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 1, coords.Item2 - 1))); } } } if (HelperMaths.IsInRange(coords.Item1 - 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 + 1, 0, 7)) { if (Layout[coords.Item1 - 1][coords.Item2 + 1] != null) { if (Layout[coords.Item1 - 1][coords.Item2 + 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 - 1, coords.Item2 + 1))); } } } } if (this.PieceColor.ToString() == "Black") { if (HelperMaths.IsInRange(coords.Item1 + 1, 0, 7)) { if (Layout[coords.Item1 + 1][coords.Item2] == null) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 1, coords.Item2))); } } if (HelperMaths.IsInRange(coords.Item1 + 2, 0, 7) && HelperMaths.IsInRange(coords.Item1 + 1, 0, 7)) { if (Layout[coords.Item1 + 2][coords.Item2] == null && Layout[coords.Item1 + 1][coords.Item2] == null && coords.Item1 == 1) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 2, coords.Item2))); } } if (HelperMaths.IsInRange(coords.Item1 + 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 + 1, 0, 7)) { if (Layout[coords.Item1 + 1][coords.Item2 + 1] != null) { if (Layout[coords.Item1 + 1][coords.Item2 + 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 1, coords.Item2 + 1))); } } } if (HelperMaths.IsInRange(coords.Item1 + 1, 0, 7) && HelperMaths.IsInRange(coords.Item2 - 1, 0, 7)) { if (Layout[coords.Item1 + 1][coords.Item2 - 1] != null) { if (Layout[coords.Item1 + 1][coords.Item2 - 1].PieceColor != this.PieceColor) { availableMoves.Add(new Move(coords, Tuple.Create(coords.Item1 + 1, coords.Item2 - 1))); } } } } return(availableMoves); }