gpt4 book ai didi

java - 需要帮助防止棋子在第一次移动后移动两格

转载 作者:行者123 更新时间:2023-12-01 07:25:58 25 4
gpt4 key购买 nike

我正在开发一个国际象棋游戏,并且能够让我的棋子向前移动一个和两个方格,但我很难阻止它在第一次移动后向前移动两个方格。如果有人能帮助我了解如何实现它的逻辑或想法,我将不胜感激。

这是我的代码:

 private boolean isValidPawnMove(int sourceRow, int sourceColumn, int targetRow, int        
targetColumn) {

boolean isValid = false;

if(isTargetLocationFree()){
if(sourceColumn == targetColumn){
//same column
if(sourcePiece.getColor() == Piece.YELLOW_COLOR){
//yellow
if(sourceRow + 1 == targetRow ){
//move one up
isValid = true;

}else if(sourceRow + 2 == targetRow ){
isValid = true;
}else{
//not moving one up
isValid = false;
}
}else{
//brown
if(sourceRow - 1 == targetRow){
//move one down
isValid = true;
}else if(sourceRow - 2 == targetRow){
isValid = true;

}else{
//not moving one down
isValid = false;
}
}
}else{
//not the same column
isValid = false;
}
}else if(isTargetLocationCaptureable()){
if(sourceColumn + 1 == targetColumn || sourceColumn - 1 == targetColumn ){
//one column to the right or left
if(sourcePiece.getColor() == Piece.YELLOW_COLOR){
//yellow
if(sourceRow + 1 == targetRow){
//move one up
isValid = true;
}else{
//not moving one up
isValid = false;
}
}else{
//brown
if(sourceRow - 1 == targetRow ){
//move one down
isValid = true;
}else{
//not moving one down
isValid = false;
}
}
}else{
//One column to the left or right
isValid = false;
}
}
return isValid;
}

private boolean isTargetLocationCaptureable(){
if(targetPiece == null){
return false;
}else if( targetPiece.getColor() != sourcePiece.getColor()){
return true;
}else{
return false;
}
}

private boolean isTargetLocationFree(){
return targetPiece == null;
}

最佳答案

我不会为你编写代码,但你的条件应该基于sourceRow。如果您的源行是 pawn 开始的原始行(第二行或第七行,具体取决于哪个玩家),则 pawn 只能移动两行。

关于java - 需要帮助防止棋子在第一次移动后移动两格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24684629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com