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);
        }
コード例 #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;
            }
        }
コード例 #3
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 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);
     }
 }
コード例 #4
0
ファイル: SmartComputerPlayer.cs プロジェクト: rockem/reverci
        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;
        }
コード例 #5
0
ファイル: FormsBoardView.cs プロジェクト: rockem/reverci
        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();
        }
コード例 #6
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
        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;
        }
コード例 #7
0
ファイル: StatusController.cs プロジェクト: rockem/reverci
 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();
 }
コード例 #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;
        }
コード例 #9
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
        public int GetPieceCountOfType(eCoinType i_CoinType)
        {
            var counter = 0;
            foreach (Coin coin in r_Board)
            {
                if (coin.CoinType == i_CoinType)
                {
                    counter++;
                }
            }

            return counter;
        }
コード例 #10
0
ファイル: FormsBoardLabeler.cs プロジェクト: rockem/reverci
        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();
        }
コード例 #11
0
ファイル: SmartPlayerTest.cs プロジェクト: rockem/reverci
 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;
 }
コード例 #12
0
ファイル: SquareTypeUtil.cs プロジェクト: rockem/reverci
        public static eCoinType GetOtherColor(eCoinType i_Color)
        {
            eCoinType color;
            if (i_Color == eCoinType.Black)
            {
                color = eCoinType.White;
            }
            else
            {
                color = eCoinType.Black;
            }

            return color;
        }
コード例 #13
0
ファイル: ReverciBoardBuilder.cs プロジェクト: rockem/reverci
        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;
        }
コード例 #14
0
ファイル: FormsBoardView.cs プロジェクト: rockem/reverci
        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();
        }
コード例 #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);
        }
コード例 #16
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
        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;
        }
コード例 #17
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 public ScanUpForwardDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
コード例 #18
0
ファイル: KingCoin.cs プロジェクト: GuyBalmas/Checkers
 public KingCoin(eCoinType i_CoinType, GameBoard i_Board) : base(i_CoinType, i_Board)
 {
     IsKing = true;
     setKingSign();
 }
コード例 #19
0
ファイル: BoardControllerTest.cs プロジェクト: rockem/reverci
 public void AddPreview(List<Point> i_Points, eCoinType i_Color)
 {
     m_PreviewPoints = i_Points;
     m_PreviewColor = i_Color;
 }
コード例 #20
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
        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;
        }
コード例 #21
0
 public void AddCoin([FromBody] eCoinType coinType, [FromBody] int count = 1)
 {
     this.coinJar.AddCoin(coinType, count);
 }
コード例 #22
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
        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;
        }
コード例 #23
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 public ScanDownBackDiagonalTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
コード例 #24
0
ファイル: BoardControllerTest.cs プロジェクト: rockem/reverci
 public void UpdateBoardWith(eCoinType[][] i_BoardData)
 {
     m_Data = i_BoardData;
     m_BoardWasUpdated = true;
 }
コード例 #25
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 private void validateMove(int i_X, int i_Y, eCoinType i_Color)
 {
     if (!thereIsSomethingToEatOn(i_X, i_Y, i_Color))
     {
         throw new NonValidMoveException();
     }
 }
コード例 #26
0
 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);
 }
コード例 #27
0
ファイル: FormsGameView.cs プロジェクト: rockem/reverci
 public void DispatchLastMove(int i_X, int i_Y, eCoinType i_Color)
 {
     r_StatusController.LogMove(i_X, i_Y, i_Color);
     setEnabledOnSaveTo(true);
 }
コード例 #28
0
ファイル: FormsGameView.cs プロジェクト: rockem/reverci
 private void setModelOnBoard(eCoinType[][] i_Board)
 {
     r_BoardController.SetModel(new ReverciBoardModel(i_Board));
     r_StatusController.Clear();
     r_BoardController.UpdatePlayers();
 }
コード例 #29
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 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);
 }
コード例 #30
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 public ReverciBoardModel(eCoinType[][] i_BoardData)
 {
     r_Board = new Board(i_BoardData);
 }
コード例 #31
0
ファイル: FormsBoardLabeler.cs プロジェクト: rockem/reverci
 public void AddPreview(List<Point> i_Points, eCoinType i_Color)
 {
     r_BoardView.AddPreview(i_Points, i_Color);
 }
コード例 #32
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 public ScanForwardTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
     : base(i_BoardModel, i_Color)
 {
 }
コード例 #33
0
ファイル: BoardController.cs プロジェクト: rockem/reverci
 public void setCurrentPlayer(eCoinType i_Player)
 {
     m_CurrentPlayer = i_Player;
 }
コード例 #34
0
ファイル: ReverciBoardModel.cs プロジェクト: rockem/reverci
 protected ScanTemplate(ReverciBoardModel i_BoardModel, eCoinType i_Color)
 {
     r_BoardModel = i_BoardModel;
     r_Color = i_Color;
 }
コード例 #35
0
ファイル: CoinJar.cs プロジェクト: gcogco10/CoinJarRestApi
 // constructor.
 public Coins(eCoinType coinType)
 {
     CoinType = coinType;
 }
コード例 #36
0
ファイル: BoardControllerTest.cs プロジェクト: rockem/reverci
 public void setColor(eCoinType i_Color)
 {
     m_Color = i_Color;
 }
コード例 #37
0
ファイル: Coin.cs プロジェクト: rockem/reverci
 public Coin(eCoinType i_CoinType, int i_X, int i_Y)
 {
     CoinType = i_CoinType;
     X = i_X;
     Y = i_Y;
 }
コード例 #38
0
ファイル: CoinJar.cs プロジェクト: gcogco10/CoinJarRestApi
        // Add method.

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