Пример #1
0
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;
}
Пример #3
0
bool ChineseCheckersState::gameOver() const {
  return player1Wins() || player2Wins();
}