int ChineseCheckersState::winner() const { if (player1Wins()) return 1; if (player2Wins()) return 2; return -1; // No one has won }
bool Moderator::playerMove(bool isPlayer1,int input){ bool retVal = true; QPair<int,QPair<int,int> > playerOutput = currentGame.playMove(input); if(playerOutput.first==-1){ if(isPlayer1){ if(player1->isManual) { console("INVALID"); writeLineToTerminal("INVALID"); return false; } console("Player 1 placed a piece in an invalid location. ("+QString().setNum(input)+")"); player2Wins(true); } else{ if(player2->isManual) { console("INVALID"); writeLineToTerminal("INVALID"); return false; } console("Player 2 placed a piece in an invalid location. ("+QString().setNum(input)+")"); player1Wins(true); } return false; } emit(piecePlaced(playerOutput.second.first,playerOutput.second.second)); if(playerOutput.first==-2){ tieGame(); retVal = false; } if(playerOutput.first==0){ if(isPlayer1){ if(commandLine) writeLineToTerminal("PLAYER1MOVE"+QString().setNum(playerOutput.second.first)+QString().setNum(playerOutput.second.second)); player1Wins(false); } else{ if(commandLine) writeLineToTerminal("PLAYER2MOVE"+QString().setNum(playerOutput.second.first)+QString().setNum(playerOutput.second.second)); player2Wins(false); } retVal = false; } return retVal; }
bool ChineseCheckersState::gameOver() const { return player1Wins() || player2Wins(); }