-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