public Board(int rows=6, int columns=7)
 {
     Cells = new Checker[rows,columns];
     for (int i = 0; i < rows; ++i)
         for (int j = 0; j < columns; ++j)
             Cells[i, j] = Checker.Empty;
 }
        /// <summary>
        /// Actualiza la posicion de las fichas de checkers despues de un turno durante una partida de juego checkers
        /// </summary>
        /// <param name="boardMatrixUpdate"></param>
        public void UpdateCheckersGuiPosition(Checker[,] boardMatrixUpdate)
        {
            boardMatrix = boardMatrixUpdate;
            buttonList.ForEach(button =>
            {
                int row = Grid.GetRow(button);
                int col = Grid.GetColumn(button);

                if (boardMatrixUpdate[row, col] == Checker.player1Checker)
                {
                    button.Content    = "•";
                    button.FontSize   = 20;
                    button.Foreground = player1Color;
                }
                else
                {
                    if (boardMatrixUpdate[row, col] == Checker.player1King)
                    {
                        button.Content    = "♛";
                        button.FontSize   = 20;
                        button.Foreground = player1Color;
                    }
                    else
                    {
                        PlayerTwoCheckersUpdate(boardMatrixUpdate, button);
                    }
                }
            });
        }
Esempio n. 3
0
 private void insertKingRegularMovesToList(Checker[,] i_Board)
 {
     checkRightRegularMove((int)m_Color, i_Board);
     checkLeftRegularMove((int)m_Color, i_Board);
     checkRightRegularMove((int)OppositeColor(), i_Board);
     checkLeftRegularMove((int)OppositeColor(), i_Board);
 }
Esempio n. 4
0
        public void initializeBoard(int i_BoardSize)
        {
            m_CurrentMove   = new Move();
            m_CurrentTurn   = ePlayerColor.White;
            m_Board         = new Checker[i_BoardSize, i_BoardSize];
            m_BlacksCounter = 0;
            m_WhitesCounter = 0;
            ColorToss();

            for (int i = 0; i < (i_BoardSize / 2) - 1; i++)           // initialize the black checkers on the board
            {
                for (int j = (i + 1) % 2; j < i_BoardSize; j += 2)
                {
                    m_Board[i, j] = new Checker(ePlayerColor.Black, new SquarePosition(i, j));
                    m_BlacksCounter++;
                }
            }

            for (int i = i_BoardSize - 1; i > i_BoardSize / 2; i--)       // initialize the white checkers on the board
            {
                for (int j = (i + 1) % 2; j < i_BoardSize; j += 2)
                {
                    m_Board[i, j] = new Checker(ePlayerColor.White, new SquarePosition(i, j));
                    m_WhitesCounter++;
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Crea una solicitud al servidor para actualiza el tablero de la partida
        /// despues de una accion por el jugador 1 de la partida
        /// </summary>
        /// <param name="updateBoardMatrix"></param>
        /// <param name="matchNumber"></param>
        /// <param name="playerTwoCheckers"></param>
        /// <param name="playerOneCheckers"></param>
        /// <exception>
        /// Esta excepcion puede retornar una excepcion tipo EndpointNotFoundException
        /// </exception>
        public static void Player1TurnResult(Checker [,] updateBoardMatrix, int matchNumber, int playerTwoCheckers, int playerOneCheckers)
        {
            Checker[][] checkersNewMatrix = new Checker[updateBoardMatrix.GetLength(0)][];
            int         rowNumber         = 0;
            int         columnNumber      = 0;

            for (rowNumber = 0; rowNumber < 8; rowNumber++)
            {
                checkersNewMatrix[rowNumber] = new Checker[updateBoardMatrix.GetLength(1)];
                for (columnNumber = 0; columnNumber < 8; columnNumber++)
                {
                    checkersNewMatrix[rowNumber][columnNumber] = updateBoardMatrix[rowNumber, columnNumber];
                }
            }
            try
            {
                InstanceContext   instanceContext = new InstanceContext(new GameManagerCallbackHandler());
                GameManagerClient server          = new GameManagerClient(instanceContext);
                server.Player1Turn(checkersNewMatrix, matchNumber, playerTwoCheckers, playerOneCheckers);
            }
            catch (EndpointNotFoundException)
            {
                MessageBox.Show(Properties.Resources.NoConnectionMessage);
            }
        }
Esempio n. 6
0
        public static void DrawBoard(Checker[,] i_Board)
        {
            StringBuilder boardBuilder = new StringBuilder();
            int           sizeOfBoard  = i_Board.GetLength(0);

            for (int i = 0; i < sizeOfBoard; i++)
            {
                boardBuilder.Append(" ").Append(" ").Append(" ").Append((char)('A' + i));               ////first line of BIG letters
            }

            boardBuilder.AppendLine();

            for (int i = 0; i < (2 * sizeOfBoard) + 1; i++)
            {                                                                        //// other (2*sizeofboard + 1) lines to represent the gameplay
                if (i % 2 == 0)
                {
                    boardBuilder.Append(' ').Append('=', (4 * sizeOfBoard) + 1);
                    boardBuilder.AppendLine();
                }
                else if (i % 2 == 1)
                {
                    boardBuilder.Append((char)('a' + (i / 2))).Append("|");
                    DrawLine((i - 1) / 2, sizeOfBoard, i_Board, boardBuilder);
                    boardBuilder.AppendLine();
                }
            }

            Ex02.ConsoleUtils.Screen.Clear();
            Console.Write(boardBuilder.ToString());
        }
        private void PlayerTwoCheckersUpdate(Checker[,] boardMatrixUpdate, Button button)
        {
            int row = Grid.GetRow(button);
            int col = Grid.GetColumn(button);

            if (boardMatrixUpdate[row, col] == Checker.player2Checker)
            {
                button.Content    = "•";
                button.FontSize   = 20;
                button.Foreground = player2Color;
            }
            else
            {
                if (boardMatrixUpdate[row, col] == Checker.player2King)
                {
                    button.Content    = "♚";
                    button.FontSize   = 20;
                    button.Foreground = player2Color;
                }
                else
                {
                    button.Content = "";
                }
            }
        }
Esempio n. 8
0
 public Form1()
 {
     FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
     StartPosition = FormStartPosition.CenterScreen;
     ClientSize = new Size(ElementSize * 8, ElementSize * 8);
     DoubleBuffered = true;
     Text = "Checkers";
     field = new Game().CreateMap();
 }
Esempio n. 9
0
        public bool insertSoldierEatingMovesToList(Checker[,] i_Board)
        {
            bool thereAreEatingMoves = false;

            m_PossibleMoves.Clear();
            thereAreEatingMoves = checkRightEatingMove((int)m_Color, i_Board) ||
                                  checkLeftEatingMove((int)m_Color, i_Board);

            return(thereAreEatingMoves);
        }
Esempio n. 10
0
 public Board(int rows = 6, int columns = 7)
 {
     Cells = new Checker[rows, columns];
     for (int i = 0; i < rows; ++i)
     {
         for (int j = 0; j < columns; ++j)
         {
             Cells[i, j] = Checker.Empty;
         }
     }
 }
Esempio n. 11
0
    private void SpawnAllCheckers()
    {
        activeChecker = new List <GameObject>();
        Checkers      = new Checker[8, 8];

        for (int i = 0; i < 8; i++)
        {
            SpawnChecker(0, i, 0);
            SpawnChecker(1, i, 7);
        }
    }
Esempio n. 12
0
        private void checkLeftRegularMove(int i_Color, Checker[,] i_Board)
        {
            int i         = m_Position.Y;
            int j         = m_Position.X;
            int boardSize = i_Board.GetLength(0);

            if (i - i_Color < boardSize &&
                i - i_Color >= 0 &&
                j - 1 >= 0 &&
                i_Board[i - i_Color, j - 1] == null)
            {
                m_PossibleMoves.Add(new Move(m_Position, new SquarePosition(i - i_Color, j - 1)));  //insert possible move to array
            }
        }
Esempio n. 13
0
    void generateBoard()
    {
        if (PlayerPrefs.HasKey("BoardSize"))
        {
            boardSize = PlayerPrefs.GetInt("BoardSize");
        }
        boardSize       = PlayerPrefs.GetInt("BoardSize");
        checkersOnBoard = new Checker[boardSize, boardSize];
        board           = new GameObject[boardSize, boardSize];
        GameObject boardObject = Instantiate(new GameObject("Board"), gameObject.transform);

        boardObject.transform.localPosition = new Vector3(0, 0, 0.1f);
        GameObject checkerObject = Instantiate(new GameObject("Checkers"), gameObject.transform);

        checkerObject.transform.localPosition = new Vector3(0, 0, 0);

        bool color = true;  //true means black, false white

        for (int i = 0; i < boardSize; i++)
        {
            color = !color;
            for (int j = 0; j < boardSize; j++)
            {
                color = !color;
                if (color)
                {
                    board[i, j] = Instantiate(blackField, boardObject.transform);

                    if (j < (boardSize / 2 - 1))//generate red
                    {
                        createChecker(checkerObject.transform, false, new int[] { i, j });
                    }
                    if (boardSize / 2 < j)//generate white
                    {
                        createChecker(checkerObject.transform, true, new int[] { i, j });
                    }
                }
                else
                {
                    board[i, j] = Instantiate(whiteField, boardObject.transform);
                }
                board[i, j].transform.SetParent(boardObject.transform);
                board[i, j].transform.localPosition = new Vector3(i, j, 0);
            }
        }
    }
Esempio n. 14
0
 public MyForm(Checker[,] field)
 {
     black.Initialize(Color.Black);
     white.Initialize(Color.White);
     //to make a turn mark your fields to go one by one and press "T". To simulate a game
     //press space button. Happy gaming, your BandW404 team!
     FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
     this.field = field;
     validator = new Validator();
     StartPosition = FormStartPosition.CenterScreen;
     ClientSize = new Size(ElementSize * 8, ElementSize * 8);
     DoubleBuffered = true;
     Text = "Checkers";
     tickCount = 0;
     this.KeyDown += MyForm_KeyDown;
     this.MouseClick += MyForm_MouseClick;
 }
Esempio n. 15
0
        private static void DrawLine(int i_LineIndex, int i_SizeOfBoard, Checker[,] i_BoardMatrix, StringBuilder i_BoardBuilder)
        {
            for (int j = 0; j < i_SizeOfBoard; j++)
            {
                if ((j + i_LineIndex) % 2 == 1)
                {
                    i_BoardBuilder.Append(" ");

                    if (i_BoardMatrix[i_LineIndex, j] == null)
                    {
                        i_BoardBuilder.Append(' ');
                    }
                    else if (i_BoardMatrix[i_LineIndex, j].Color == ePlayerColor.White)
                    {
                        if (i_BoardMatrix[i_LineIndex, j].Type == Checker.eCheckerType.Soldier)
                        {
                            i_BoardBuilder.Append('X');
                        }
                        else
                        {
                            i_BoardBuilder.Append('K');
                        }
                    }
                    else if (i_BoardMatrix[i_LineIndex, j].Color == ePlayerColor.Black)
                    {
                        if (i_BoardMatrix[i_LineIndex, j].Type == Checker.eCheckerType.Soldier)
                        {
                            i_BoardBuilder.Append('O');
                        }
                        else
                        {
                            i_BoardBuilder.Append('U');
                        }
                    }

                    i_BoardBuilder.Append(" ").Append("|");
                }
                else
                {
                    i_BoardBuilder.Append(" ").Append(" ").Append(" ").Append("|");
                }
            }
        }
Esempio n. 16
0
        public void InsertPossibleCorrectMovesToList(Checker[,] i_Board)
        {
            bool thereAreEatingMoves = false;

            if (m_Type == eCheckerType.Soldier)
            {
                thereAreEatingMoves = insertSoldierEatingMovesToList(i_Board);
                if (!thereAreEatingMoves)
                {
                    insertSoldierRegularMovesToList(i_Board);
                }
            }
            else if (m_Type == eCheckerType.King)
            {
                thereAreEatingMoves = insertKingEatingMovesToList(i_Board);
                if (!thereAreEatingMoves)
                {
                    insertKingRegularMovesToList(i_Board);
                }
            }
        }
Esempio n. 17
0
        private bool checkLeftEatingMove(int i_Color, Checker[,] i_Board)
        {
            bool thereIsEatingMove = false;
            int  i         = m_Position.Y;
            int  j         = m_Position.X;
            int  boardSize = i_Board.GetLength(0);

            if (i - (2 * i_Color) < boardSize &&
                j - 2 >= 0 &&
                i - (2 * i_Color) >= 0 &&
                i_Board[i - i_Color, j - 1] != null &&
                i_Board[i - i_Color, j - 1].Color == OppositeColor())
            {
                if (i_Board[i - (2 * i_Color), j - 2] == null)
                {
                    m_PossibleMoves.Add(new Move(m_Position, new SquarePosition(i - (2 * i_Color), j - 2)));  //insert move to array
                    thereIsEatingMove = true;
                }
            }

            return(thereIsEatingMove);
        }
        private void GenerateGame()
        {
            buttonList  = Board.Children.Cast <Button>().ToList();
            boardMatrix = new Checker[8, 8];

            int travelRow;

            for (travelRow = 0; travelRow < 8; travelRow++)
            {
                if (travelRow == 0 || travelRow == 2 || travelRow == 6)
                {
                    int travelColumns;

                    for (travelColumns = 0; travelColumns < 7; travelColumns += 2)
                    {
                        if (travelRow == 0 || travelRow == 2)
                        {
                            boardMatrix[travelRow, travelColumns] = Checker.player2Checker;
                        }
                        else
                        {
                            boardMatrix[travelRow, travelColumns] = Checker.player1Checker;
                        }
                    }
                }
                GeneratingGameProcess(travelRow);
            }
            player1Turn            = true;
            checkPlayerSecondClick = false;
            rowNumber           = -1;
            columnNumber        = 0;
            previousRow         = 0;
            previousColumn      = 0;
            player1CheckerCount = 12;
            player2CheckerCount = 12;

            GenerateCheckers();
        }
Esempio n. 19
0
 private void insertSoldierRegularMovesToList(Checker[,] i_Board)
 {
     checkRightRegularMove((int)m_Color, i_Board);
     checkLeftRegularMove((int)m_Color, i_Board);
 }
Esempio n. 20
0
 public void Update(Checker[,] field)
 {
     this.field = field;
     Invalidate();
 }
Esempio n. 21
0
		public Grid ()
		{
			_grid = new Checker[10,10];

			InitializeGrid ();
		}
Esempio n. 22
0
        public void InitGame()
        {
            this.size = 8;
            ArrayField = new Checker [this.size, this.size];
            bool isBlack = false;
            checkersToDelete = new List<Cell>(); // возможные бои для выбранной шашки
            battleCheckers = new List<Cell>(); // все возможные бои на доске
            moves = new List<Cell>(); // возможные ходы для выбранной шашки
            jump = false;
            currentPlayer = 1; // 1 - white, 2 - black
            IsChecked = false;
            countWhiteChecker = countBlackChecker = 12;

            for (int x = 0; x < this.size; x++)
            {
                for (int y = 0; y < this.size; y++)
                {
                    if (isBlack && y < 3)
                        ArrayField[x, y] = new Checker(x, y, 1, 2, true, false, 0);
                    else if (isBlack && y > 4)
                        ArrayField[x, y] = new Checker(x, y, 1, 1, true, false, 0);
                    else if (isBlack)
                        ArrayField[x, y] = new Checker(x, y, 0, 0, true, false, 0);
                    else
                        ArrayField[x, y] = new Checker(x, y, 0, 0, false, false, 0);
                    isBlack = !isBlack;
                }
                isBlack = !isBlack;
            }
        }
Esempio n. 23
0
        public Board(int i_ChoiseForBoardSize)
        {
            r_BoardSize = (ePossibleBoardSizes)i_ChoiseForBoardSize;

            r_BoardMatrix = new Checker[(int)r_BoardSize, (int)r_BoardSize];
        }