Hey all,
Wednesday I started writing a console-based chess program in my C++ class and today I've gotten the basis for the program completed (need to add a check to see if there's check or checkmate, and AI in the future...).
BUT tonight I remembered that I didn't put in a check to prevent pieces from jumping over other pieces, so I started going through and fixing it. While I was doing that, I added a couple of lines to my pawn movement code and now my pawns can't move at all.. hmm!!
here's the pertinent code, with the parts I added in BOLD:
this is part of a class method for the class BOARD. The function is called Move, and takes 4 integers (x1, y1, x2, y2), and returns a bool statement (when it was working, it returned void, but I changed it for future functionality I'm adding - I don't see how that would change it though?)Code:if(board[x1][y1] == 'p') { if(x1 == 6) // for starting pawns { if((x2 == (x1-1) || x2 == (x1-2)) && (y2 == (y1-1) || y2 == (y1+1)) && (board[x2][y2] == '_')) { cout << "Invalid move." << endl; return false; } if(x2 == (x1-1) || x2 == (x1-2) && (y2 != y1)) { cout << "Invalid move." << endl; return false; } if(x2 == (x1-2) && (x1-1) != '_') { cout << "Invalid move." << endl; return false; } else { board[x1][y1] = '_'; board[x2][y2] = 'p'; this->showBoard(); this->setTurn(2); return true; } }
Any ideas? I have a feeling its a really obvious mistake, but those are the hardest for me to spot
Here's the entire code if you need it:
http://dydx.no-ip.com:8080/main.cpp
http://dydx.no-ip.com:8080/board.h
http://dydx.no-ip.com:8080/board.cpp



LinkBack URL
About LinkBacks



