Пример #1
0
        public void MovePiece(PositionChess startPosition, PositionChess endPosition)
        {
            var piece = (Piece)chessBoard.GetPiece(ConvertPosition(startPosition));

            if (ExistMove(ConvertPosition(startPosition)))
            {
                Position _Position = ConvertPosition(endPosition);



                if (ValidateColorPiece(piece))
                {
                    bool[,] matrix = chessBoard.GetPiece(ConvertPosition(startPosition)).MovimentValidate();
                    if (matrix[_Position.Line, _Position.Column])
                    {
                        TakePiece(_Position);//se capitura iremos remover a peça antes de colocarmos a peça para a posição
                        chessBoard.RemovePiece(ConvertPosition(startPosition));
                        chessBoard.SetPiece(piece, ConvertPosition(endPosition));
                        Console.WriteLine(ConvertPosition(startPosition).Line + " " + ConvertPosition(startPosition).Column);
                        Console.WriteLine(ConvertPosition(endPosition).Line + " " + ConvertPosition(endPosition).Column);
                        this.turno++;
                    }
                    else
                    {
                        Console.WriteLine("Não é uma posição de jogada valida, seleciona uma das casas em destaque");
                    }
                }
                else
                {
                    Console.WriteLine(turno + "A peça é do adversario : " + piece.Color.ToString());
                }
            }
            else
            {
                Console.WriteLine("Não é possivel mover está peça.");
            }
        }
Пример #2
0
        public Position ConvertPosition(PositionChess positionChess)
        {
            int aux  = 0;
            int aux1 = 0;

            switch ((int)positionChess.Column)
            {
            //dá para substituir este case por (int)char - 65, apenas verificar neste caso se o valor gerado esta dentro dos parametros com o validate
            case 65:    //A
                aux = 0;
                break;

            case 66:    //B
                aux = 1;
                break;

            case 67:    //C
                aux = 2;
                break;

            case 68:    //D
                aux = 3;
                break;

            case 69:    //E
                aux = 4;
                break;

            case 70:    //F
                aux = 5;
                break;

            case 71:    //G
                aux = 6;
                break;

            case 72:    //H
                aux = 7;
                break;

            default:
                throw new BoardException("Error Convert move" + aux + " " + aux1);
                break;
            }
            //o mesmo pode ser feito para a inversão do valor referece a subtração do elemento maximo e o elemento informado, vendo neste aspecto
            // tal metodo não neceria nem mesmo necessario.
            switch (positionChess.Line)
            {
            case 8:
                aux1 = 0;
                break;

            case 7:
                aux1 = 1;
                break;

            case 6:
                aux1 = 2;
                break;

            case 5:
                aux1 = 3;
                break;

            case 4:
                aux1 = 4;
                break;

            case 3:
                aux1 = 5;
                break;

            case 2:
                aux1 = 6;
                break;

            case 1:
                aux1 = 7;
                break;

            default:
                throw new BoardException("Error Convert move" + aux + " " + aux1);
                break;
            }

            return(chessBoard.ValidatePosition(new Position(aux1, aux)) ? new Position(aux1, aux) : null);
        }