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);
        }
Esempio n. 2
0
        /// <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;
            }
        }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        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;
        }
Esempio n. 7
0
 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();
 }
Esempio n. 8
0
        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;
        }
Esempio n. 9
0
        public int GetPieceCountOfType(eCoinType i_CoinType)
        {
            var counter = 0;
            foreach (Coin coin in r_Board)
            {
                if (coin.CoinType == i_CoinType)
                {
                    counter++;
                }
            }

            return counter;
        }
Esempio n. 10
0
        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();
        }
Esempio n. 11
0
 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;
 }
Esempio n. 12
0
        public static eCoinType GetOtherColor(eCoinType i_Color)
        {
            eCoinType color;
            if (i_Color == eCoinType.Black)
            {
                color = eCoinType.White;
            }
            else
            {
                color = eCoinType.Black;
            }

            return color;
        }
Esempio n. 13
0
        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;
        }
Esempio n. 14
0
        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();
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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;
        }
Esempio n. 17
0
 public ScanUpForwardDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
Esempio n. 18
0
 public KingCoin(eCoinType i_CoinType, GameBoard i_Board) : base(i_CoinType, i_Board)
 {
     IsKing = true;
     setKingSign();
 }
Esempio n. 19
0
 public void AddPreview(List<Point> i_Points, eCoinType i_Color)
 {
     m_PreviewPoints = i_Points;
     m_PreviewColor = i_Color;
 }
Esempio n. 20
0
        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;
        }
Esempio n. 21
0
 public void AddCoin([FromBody] eCoinType coinType, [FromBody] int count = 1)
 {
     this.coinJar.AddCoin(coinType, count);
 }
Esempio n. 22
0
        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;
        }
Esempio n. 23
0
 public ScanDownBackDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
Esempio n. 24
0
 public void UpdateBoardWith(eCoinType[][] i_BoardData)
 {
     m_Data = i_BoardData;
     m_BoardWasUpdated = true;
 }
Esempio n. 25
0
 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);
 }
Esempio n. 27
0
 public void DispatchLastMove(int i_X, int i_Y, eCoinType i_Color)
 {
     r_StatusController.LogMove(i_X, i_Y, i_Color);
     setEnabledOnSaveTo(true);
 }
Esempio n. 28
0
 private void setModelOnBoard(eCoinType[][] i_Board)
 {
     r_BoardController.SetModel(new ReverciBoardModel(i_Board));
     r_StatusController.Clear();
     r_BoardController.UpdatePlayers();
 }
Esempio n. 29
0
 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);
 }
Esempio n. 30
0
 public ReverciBoardModel(eCoinType[][] i_BoardData)
 {
     r_Board = new Board(i_BoardData);
 }
Esempio n. 31
0
 public void AddPreview(List<Point> i_Points, eCoinType i_Color)
 {
     r_BoardView.AddPreview(i_Points, i_Color);
 }
Esempio n. 32
0
 public ScanForwardTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
Esempio n. 33
0
 public void setCurrentPlayer(eCoinType i_Player)
 {
     m_CurrentPlayer = i_Player;
 }
Esempio n. 34
0
 protected ScanTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
 {
     r_BoardModel = i_BoardModel;
     r_Color = i_Color;
 }
Esempio n. 35
0
 // constructor.
 public Coins(eCoinType coinType)
 {
     CoinType = coinType;
 }
Esempio n. 36
0
 public void setColor(eCoinType i_Color)
 {
     m_Color = i_Color;
 }
Esempio n. 37
0
 public Coin(eCoinType i_CoinType, int i_X, int i_Y)
 {
     CoinType = i_CoinType;
     X = i_X;
     Y = i_Y;
 }
Esempio n. 38
0
        // Add method.

        public void AddCoin(eCoinType coinType, int count = 1)
        {
            coins.First(t => t.CoinType == coinType).Amount += count;
        }