chess-system-java's People
Forkers
iplinsky gucaveira victhor409 alexprazeress carlosbecken baboime danilokadet matheustirabassi lauramab edulg101 tetheusbr aristoncorrea mailsonfp caleberodrigues brunoes pagani-dev leovd100 joaopedro4921 arildojunior ldavip lucasr80 icarodecaires martinsrvinicius josephkat danilosanna wesob matheuspinheiro23 rafaelburato niedsonsantana brunodanielcg jronaldojr rafikicwb albertohr-dev nettuf irineuraymundo marcelinogneto cabulozo giatti-hub alefagundes joaofilipecs gabrielalex65 delaneymaciel alisonjlima m-melo reinaldo-santos-cerqueira cesarkrautiuk paulosmj lordevan helenanakamura lgtrindade myforked-repos ruanxbrx tzappiello laseury luizcarlosdias brenogff rafaelsaca matheusdev22 erik-collab ericsous cabxavier delson011 fernandine gersonreismelo flrocha84 juniorkml paulohsneto somborac190 adonaidevelop infinitelitz dungeonmaster17 juanfaria02 marcosandrebueno marina-msl mr-demon-h cry199 guilhermec98 otaneves viniciusmarkdev viniciusmvilela viniciusaznar pkbsa alexguedessiva marcossouz jbatista1975 calletal nickhirata agutrachta gabriellucianochess-system-java's Issues
Wrong Position
Boa tarde, grande mestre Nelio.
Venho trabalhando encima desse projeto faz uns dias e tenho muito a agradecer pelos seus ensinamentos e tudo mais, Só uma questão que a posição dos Kings estão errada pois como venho vendo está na casa E e sendo na verdade na casa D.
Implementei e meu castling estava toda hora dando erro e tudo mais ai fui perceber que tenho que fazer o castling inverso para poder conseguir implementar kkkk.
#Ficou assim mais ou menos
if (getMoveCount() == 0 && !chessMatch.getCheck()) {
Position posT1 = new Position(position.getRow(), position.getColumn() + 4);
if (testRookCastling(posT1)) {
Position p1 = new Position(position.getRow(), position.getColumn() + 1);
Position p2 = new Position(position.getRow(), position.getColumn() + 2);
Position p3 = new Position(position.getRow(), position.getColumn() + 3);
if (getBoard().piecePosition(p1) == null && getBoard().piecePosition(p2) == null && getBoard().piecePosition(p3) == null) {
mat[position.getRow()][position.getColumn() + 2] = true;
}
}
Position posT2 = new Position(position.getRow(), position.getColumn() - 3);
if (testRookCastling(posT2)) {
Position p1 = new Position(position.getRow(), position.getColumn() - 1);
Position p2 = new Position(position.getRow(), position.getColumn() - 2);
if (getBoard().piecePosition(p1) == null && getBoard().piecePosition(p2) == null) {
mat[position.getRow()][position.getColumn() - 2] = true;
}
}
}
Muito obrigado pela sua atenção e seus ensinamentos sou um fã do seu trabalho 👏👏👏🚀🚀
Encerramento prematuro da partida sem um xeque-mate válido devido à promoção automática para rainha
A promoção automática da rainha dentro da função 'performChessMove()' pode alterar as variáveis 'check' ou 'checkMate', fazendo com que o programa acuse xeque ou xeque-mate inexistentes quando o jogador promover seu peão para uma peça que não ataque o rei do oponente.
Para reproduzir o bug, basta iniciar a partida sem as peças que não são peões no lado do rei das peças negras e um peão branco na casa H7. No primeiro movimento, promova o peão branco para um bispo ou cavalo. A partida será encerrada com um xeque-mate inexistente.
Solução sugerida: Remover o código 'promoted = replacePromotedPiece("Q");' na função 'performChessMove()' e alterar o código 'return promoted;' na função 'replacePromotedPiece()' para algo como 'throw new IllegalStateException("No valid piece for promotion was provided.");'. Em seguida atualizar os valores das variáveis 'check', 'checkMate' e 'currentPlayer' antes de finalizar a função replacePromotedPiece():
public ChessPiece replacePromotedPiece(String type) {
if (promoted == null) {
throw new IllegalStateException("There is no piece to be promoted");
}
if (!type.equals("B") && !type.equals("N") && !type.equals("R") & !type.equals("Q")) {
throw new IllegalStateException("No valid piece for promotion was provided.");
}
Position pos = promoted.getChessPosition().toPosition();
Piece p = board.removePiece(pos);
piecesOnTheBoard.remove(p);
ChessPiece newPiece = newPiece(type, promoted.getColor());
board.placePiece(newPiece, pos);
piecesOnTheBoard.add(newPiece);
check = (testCheck(currentPlayer)) ? true : false;
if (testCheckMate(currentPlayer)) {
checkMate = true;
currentPlayer = opponent(currentPlayer);
}
return newPiece;
}
.toLowerCase() no input que recebe as posições.
dessa forma não vai estourar o erro que as posições permitidas são de a1 à h8
Implementation method setupAllPieces
OPa fala ai professor Nelio tudo bem? não sei se ficou bem legal mas criei um metodo mais abreviado de setar as peças para iniciar o jogo de xadrez, não sei se vai gostar mas fiz assim.
public void setupAllPiecesForMatch() {
for (int i = 1; i <= board.getRows(); i++) {
for (int c = 0; c < board.getColumns(); c++) {
char j = (char) (97 + c);
if (i == 8 && j == 97 || i == 8 && j == 104) placeNewPieceWithChessCoordinates(j, i, new Rook(board, Color.BLACK));
if (i == 8 && j == 98 || i == 8 && j == 103) placeNewPieceWithChessCoordinates(j, i, new Knight(board, Color.BLACK));
if (i == 8 && j == 99 || i == 8 && j == 102) placeNewPieceWithChessCoordinates(j, i, new Bishop(board, Color.BLACK));
if (i == 8 && j == 100) placeNewPieceWithChessCoordinates(j, i, new King(board, Color.BLACK));
if (i == 8 && j == 101) placeNewPieceWithChessCoordinates(j, i, new Queen(board, Color.BLACK));
if (i == 7 && j < 105) placeNewPieceWithChessCoordinates(j, i, new Pawn(board, Color.BLACK));
if (i == 1 && j == 97 || i == 1 && j == 104) placeNewPieceWithChessCoordinates(j, i, new Rook(board, Color.WHITE));
if (i == 1 && j == 98 || i == 1 && j == 103) placeNewPieceWithChessCoordinates(j, i, new Knight(board, Color.WHITE));
if (i == 1 && j == 99 || i == 1 && j == 102) placeNewPieceWithChessCoordinates(j, i, new Bishop(board, Color.WHITE));
if (i == 1 && j == 101) placeNewPieceWithChessCoordinates(j, i, new King(board, Color.WHITE));
if (i == 1 && j == 100) placeNewPieceWithChessCoordinates(j, i, new Queen(board, Color.WHITE));
if (i == 2 && j < 105) placeNewPieceWithChessCoordinates(j, i, new Pawn(board, Color.WHITE));
}
}
}
Draw
Bom dia, professor, gostaria de saber se o senhor irá implementar o método de empate. Tentei fazer o empate por afogamento, mas ele sempre quebra.
Gostaria de uma ajuda.
Faltando uma condição na regra de Roque
Uma das regras para determinar se o Roque é possível é que a casa que o Rei "pula" ao realizar o roque, isto é, a casa que a torre vai parar, não pode estar sob ataque de peças adversárias. No código atual, essa jogada é permitida, desrespeitando esta regra.
Erro que está dando na implementação dos movimentos da torre.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 8
at boardgame.Board.piece(Board.java:37)
at boardgame.Board.thereIsAPiece(Board.java:73)
at chess.pieces.Rook.possibleMoves(Rook.java:37)
at boardgame.Piece.isThereAnyPossibleMove(Piece.java:24)
at chess.ChessMatch.validateSourcePosition(ChessMatch.java:48)
at chess.ChessMatch.performChessMove(ChessMatch.java:31)
at application.Program.main(Program.java:30)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.