public eCoinType GetCoinType(Coordinate i_Target) { eCoinType type = eCoinType.None; if (i_Target != null && IsValid(i_Target)) { char sign = BoardMatrix[i_Target.Row, i_Target.Column]; switch (sign) { case 'O': type = eCoinType.O; break; case 'U': type = eCoinType.O; break; case 'X': type = eCoinType.X; break; case 'K': type = eCoinType.X; break; default: break; } } return(type); }
/// <summary> /// This method assigns Coins to the given player. /// The Coins assigned are init to the starting game coordinates. /// </summary> /// <param name="i_Player"></param> public void GiveCoinsToPlayer(Player i_Player) { if (i_Player != null) { Coordinate[] coinCoordinates = initialCoinsCoordinates(i_Player); eCoinType coinsType = eCoinType.None; List <Coin> coinsList = new List <Coin>(); if (i_Player.Equals(this.m_Player1)) { coinsType = eCoinType.O; } else { coinsType = eCoinType.X; } for (int coinIndex = 0; coinIndex < coinCoordinates.Length; coinIndex++) { Coin newCoin = new Coin(coinsType, Board); { newCoin.Coordinates = coinCoordinates[coinIndex]; } coinsList.Add(newCoin); } i_Player.CoinsList = coinsList; } }
private void eatOtherColorFrom(int i_X, int i_Y, eCoinType i_Color) { foreach (var position in whoCanIEatFrom(i_X, i_Y, i_Color)) { r_Board.Set(i_Color, position.X, position.Y); } }
private int alphaBeta(eCoinType[][] i_Board, eCoinType i_Color, Point i_Move, int i_Depth, int a, int b) { var model = new ReverciBoardModel(i_Board); model.MakeMove(i_Move.X, i_Move.Y, i_Color); var otherColor = SquareTypeUtil.GetOtherColor(i_Color); var possibleMoves = model.GetPossibleMovesFor(otherColor); if (possibleMoves.Count == 0 || i_Depth == 0) { a = model.GetPieceCountOfType(getColor()) - model.GetPieceCountOfType(SquareTypeUtil.GetOtherColor(getColor())) + i_Depth; } else { foreach (var move in possibleMoves) { a = Math.Max(a, alphaBeta(model.GetBoard(), otherColor, move, i_Depth - 1, -b, -a)); if (b <= a) { break; } } } return a; }
public void UpdateBoardWith(eCoinType[][] i_BoardData) { if (i_BoardData.Length != s_BoardSize) { s_BoardSize = i_BoardData.Length; m_ControlSquares = createSquareControls(); } for (var i = 0; i < s_BoardSize; i++) { for (var j = 0; j < s_BoardSize; j++) { m_ControlSquares[i][j].PieceType = i_BoardData[i][j]; if (m_ControlSquares[i][j].PieceType == eCoinType.Move) { m_ControlSquares[i][j].BackgroundType = eBackType.ValidMove; } else { m_ControlSquares[i][j].BackgroundType = eBackType.Normal; } } } repaintBoard(); }
public List<Point> GetPreviewFor(int i_X, int i_Y, eCoinType i_Color) { var preview = new List<Point>(); if (emptySquareOn(i_X, i_Y)) { preview = whoCanIEatFrom(i_X, i_Y, i_Color); } return preview; }
public void LogMove(int i_X, int i_Y, eCoinType i_Color) { m_MovesList.Add(new[] { (m_MovesList.Count + 1).ToString(), i_Color.ToString(), (char)(i_X + 'A') + (i_Y + 1).ToString() }); updateMovesList(); }
public Coin(eCoinType i_CoinType, GameBoard i_Board) { this.m_Board = i_Board; this.m_CoinType = i_CoinType; this.m_Coordinates = new Coordinate(); this.m_IsKing = false; this.m_AvailableCoordinates = new List <Coordinate>(); this.m_Sign = i_CoinType.Equals(eCoinType.X) ? 'X' : 'O'; ChangedStatus = null; }
public int GetPieceCountOfType(eCoinType i_CoinType) { var counter = 0; foreach (Coin coin in r_Board) { if (coin.CoinType == i_CoinType) { counter++; } } return counter; }
public void UpdateBoardWith(eCoinType[][] i_BoardData) { if (i_BoardData.Length != s_BoardSize) { s_BoardSize = i_BoardData.Length; m_LetterLabels = new CreateLetterLabels(this).createLabels(); m_NumberLabels = new CreateNumberLabels(this).createLabels(); } r_BoardView.UpdateBoardWith(i_BoardData); repaintLabels(); }
private eCoinType[][] createBoardFrom(int[][] ints) { var boardSize = ints.Length; var arr = new eCoinType[boardSize][]; for (var i = 0; i < boardSize; i++) { arr[i] = new eCoinType[boardSize]; for (var j = 0; j < boardSize; j++) { arr[i][j] = convertToSquareType(ints[j][i]); } } return arr; }
public static eCoinType GetOtherColor(eCoinType i_Color) { eCoinType color; if (i_Color == eCoinType.Black) { color = eCoinType.White; } else { color = eCoinType.Black; } return color; }
private static eCoinType[][] createEmptyBoard(int i_BoardSize) { var boardState = new eCoinType[i_BoardSize][]; for (var i = 0; i < i_BoardSize; i++) { boardState[i] = new eCoinType[i_BoardSize]; for (var j = 0; j < i_BoardSize; j++) { boardState[i][j] = eCoinType.Empty; } } return boardState; }
public void AddPreview(List<Point> i_Points, eCoinType i_Color) { if (i_Points.Count > 0) { var firstPoint = i_Points[0]; m_ControlSquares[firstPoint.X][firstPoint.Y].PieceType = i_Color; for (var i = 1; i < i_Points.Count; i++) { m_ControlSquares[i_Points[i].X][i_Points[i].Y].PieceType = shadowColorFor(i_Color); } } refreshView(); }
public Coin GetCoinFromBoard(Coordinate i_Target) { Coin target = null; eCoinType type = Board.GetCoinType(i_Target); if (type == k_FirstPlayerCoinType) { target = getCoinFromPlayer(Player1, i_Target); } else if (type == k_SecondPlayerCoinType) { target = getCoinFromPlayer(Player2, i_Target); } return(target); }
public List<Point> GetPossibleMovesFor(eCoinType i_Color) { var possibleMoves = new List<Point>(); for (var i = 0; i < r_Board.Size(); i++) { for (var j = 0; j < r_Board.Size(); j++) { if (thereIsSomethingToEatOn(i, j, i_Color)) { possibleMoves.Add(new Point(i, j)); } } } return possibleMoves; }
public ScanUpForwardDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color) : base(i_BoardModel, i_Color) { }
public KingCoin(eCoinType i_CoinType, GameBoard i_Board) : base(i_CoinType, i_Board) { IsKing = true; setKingSign(); }
public void AddPreview(List<Point> i_Points, eCoinType i_Color) { m_PreviewPoints = i_Points; m_PreviewColor = i_Color; }
private bool thereIsSomethingToEatOn(int i, int j, eCoinType i_Color) { var result = false; if (emptySquareOn(i, j)) { result = whoCanIEatFrom(i, j, i_Color).Count > 0; } return result; }
public void AddCoin([FromBody] eCoinType coinType, [FromBody] int count = 1) { this.coinJar.AddCoin(coinType, count); }
private List<Point> whoCanIEatFrom(int i_X, int i_Y, eCoinType i_Color) { var listToEat = new List<Point>(); listToEat.AddRange(new ScanForwardTemplate(this, i_Color).whoToEatFrom(i_X, i_Y)); listToEat.AddRange(new ScanBackwardTemplate(this, i_Color).whoToEatFrom(i_X, i_Y)); listToEat.AddRange(new ScanDownBackDiagonalTemplate(this, i_Color).whoToEatFrom(i_X, i_Y)); listToEat.AddRange(new ScanUpForwardDiagonalTemplate(this, i_Color).whoToEatFrom(i_X, i_Y)); return listToEat; }
public ScanDownBackDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color) : base(i_BoardModel, i_Color) { }
public void UpdateBoardWith(eCoinType[][] i_BoardData) { m_Data = i_BoardData; m_BoardWasUpdated = true; }
private void validateMove(int i_X, int i_Y, eCoinType i_Color) { if (!thereIsSomethingToEatOn(i_X, i_Y, i_Color)) { throw new NonValidMoveException(); } }
private IBoardModel createModelFrom(int[][] ints) { var boardSize = ints.Length; var arr = new eCoinType[boardSize][]; for (var i = 0; i < boardSize; i++) { arr[i] = new eCoinType[boardSize]; for (var j = 0; j < boardSize; j++) { arr[i][j] = convertToSquareType(ints[j][i]); } } return new ReverciBoardModel(arr); }
public void DispatchLastMove(int i_X, int i_Y, eCoinType i_Color) { r_StatusController.LogMove(i_X, i_Y, i_Color); setEnabledOnSaveTo(true); }
private void setModelOnBoard(eCoinType[][] i_Board) { r_BoardController.SetModel(new ReverciBoardModel(i_Board)); r_StatusController.Clear(); r_BoardController.UpdatePlayers(); }
public void MakeMove(int i_X, int i_Y, eCoinType i_Color) { validateMove(i_X, i_Y, i_Color); r_Board.Set(i_Color, i_X, i_Y); eatOtherColorFrom(i_X, i_Y, i_Color); }
public ReverciBoardModel(eCoinType[][] i_BoardData) { r_Board = new Board(i_BoardData); }
public void AddPreview(List<Point> i_Points, eCoinType i_Color) { r_BoardView.AddPreview(i_Points, i_Color); }
public ScanForwardTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color) : base(i_BoardModel, i_Color) { }
public void setCurrentPlayer(eCoinType i_Player) { m_CurrentPlayer = i_Player; }
protected ScanTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color) { r_BoardModel = i_BoardModel; r_Color = i_Color; }
// constructor. public Coins(eCoinType coinType) { CoinType = coinType; }
public void setColor(eCoinType i_Color) { m_Color = i_Color; }
public Coin(eCoinType i_CoinType, int i_X, int i_Y) { CoinType = i_CoinType; X = i_X; Y = i_Y; }
// Add method. public void AddCoin(eCoinType coinType, int count = 1) { coins.First(t => t.CoinType == coinType).Amount += count; }