-1
我的所有其他作品都顺利移动,但国王正在移动,并且能够一次移动一个以上的地方,任何了解国际象棋的人都明白这是错误的,任何人都可以帮忙吗?爪哇国际象棋
这是我的王典
else if(pieceName.contains("King")){
int newY = e.getY()/75;
int newX = e.getX()/75;
boolean inTheWay = false;
int distance = Math.abs(startX-newX);
if(((newX < 0) || (newX > 7))||((newY < 0)||(newY > 7))){
validMove = false;
}
else{
validMove = true;
//Check if the move is a diagonal move
if(Math.abs(startX-newX)==Math.abs(startY-newY))
{
// If there are any pieces along the diagonal in the way the move cannot be made.
if((startX-newX < 0)&&(startY-newY < 0)){
for(int i=0; i < distance;i++){
if(piecePresent((initialX+(i*75)), (initialY+(i*75)))){
inTheWay = true;
}
}
}
else if((startX-newX < 0)&&(startY-newY > 0)){
for(int i=0; i < distance;i++){
if(piecePresent((initialX+(i*75)), (initialY-(i*75)))){
inTheWay = true;
}
}
}
else if((startX-newX > 0)&&(startY-newY > 0)){
for(int i=0; i < distance;i++){
if(piecePresent((initialX-(i*75)), (initialY-(i*75)))){
inTheWay = true;
}
}
}
else if((startX-newX > 0)&&(startY-newY < 0)){
for(int i=0; i < distance;i++){
if(piecePresent((initialX-(i*75)), (initialY+(i*75)))){
inTheWay = true;
}
}
}
if(inTheWay){
validMove = false;
}
else{
if(piecePresent(e.getX(), (e.getY()))){
if(pieceName.contains("White")){
if(checkWhiteOponent(e.getX(), e.getY())){
validMove = true;
}
else{
validMove = false;
}
}
else{
if(checkBlackOponent(e.getX(), e.getY())){
validMove = true;
}
else{
validMove = false;
}
}
}
else{
validMove = true;
}
}
}
else if(((Math.abs(startX-newX)!=0)&&(Math.abs(startY-newY) == 0))|| ((Math.abs(startX-newX)==0)&&(Math.abs(newY-startY)!=0)))
{
if(Math.abs(startX-newX)!=0){
//we have movement along the x axis
int xMovement = Math.abs(startX-newX);
if(startX-newX > 0){
//movement in the left direction....
for(int i=0;i < xMovement;i++){
if(piecePresent(initialX-(i*75), e.getY())){
inTheWay = true;
break;
}
else{
inTheWay = false;
}
}
}
else{
for(int i=0;i < xMovement;i++){
if(piecePresent(initialX+(i*75), e.getY())){
inTheWay = true;
break;
}
else{
inTheWay = false;
}
}
}
}
else{
//we have movement along the y axis
int yMovement = Math.abs(startY-newY);
if(startY-newY > 0){
//movement in the left direction....
for(int i=0;i < yMovement;i++){
if(piecePresent(e.getX(),initialY-(i*75))){
inTheWay = true;
break;
}
else{
inTheWay = false;
}
}
}
else{
for(int i=0;i < yMovement;i++){
if(piecePresent(e.getX(),initialY+(i*75))){
inTheWay = true;
break;
}
else{
inTheWay = false;
}
}
}
}
if(inTheWay){
validMove = false;
}
else{
if(piecePresent(e.getX(), (e.getY()))){
if(pieceName.contains("White")){
if(checkWhiteOponent(e.getX(), e.getY())){
validMove = true;
}
else{
validMove = false;
}
}
else{
if(checkBlackOponent(e.getX(), e.getY())){
validMove = true;
}
else{
validMove = false;
}
}
}
else{
validMove = true;
}
}
}
else{ // the move that is being tried is not a diagonal move...
validMove = false;
}
}
}
你是否在调试器中一步一步地运行你的代码? – 2014-12-18 22:52:09
你是否在检查startX是否在startX的任一侧,newY是否在startY的任一侧1内(除非正在执行castling移动)? – Jason 2014-12-18 22:53:24
它不报告应用程序中的任何错误,它只是移动,如果它的女王 – 2014-12-18 22:53:24