bool Board::gameIsOver() const { if (nbMovesLeft_ == 0) return true; for (int i=0; i<sizeX_; ++i) for (int j=0; j<sizeY_; ++j) { const QPoint p(i,j); if (pieceCanMove(p)) return false; } return true; }
bool Board::gameIsOver() const { bool thereAreRed = false; bool thereAreBlue = false; bool thereAreEmpty = false; bool moveIsPossible = false; for (int i=0; i<sizeX_; ++i) for (int j=0; j<sizeY_; ++j) { const QPoint p(i,j); Board::State state = stateOf(p); if (state == EMPTY) thereAreEmpty = true; if (state == RED) thereAreRed = true; if (state == BLUE) thereAreBlue = true; if (state == Board::blueColor(bluePlays()) && (pieceCanMove(p))) moveIsPossible = true; } return !thereAreRed || !thereAreBlue || !thereAreEmpty || !moveIsPossible; }
void Game::movePiece(IControler::e_action a) { if (!pieceCanMove(a)) return; switch (a) { case IControler::None : return; break; case IControler::Rotate : if (pieceCanRotate()) m_piece.rotate(); break; case IControler::Fall : m_speedup *= 2; break; case IControler::Right : m_piece.setX(m_piece.getX() + 1); break; case IControler::Left : m_piece.setX(m_piece.getX() - 1); break; } }
bool Board::canBeSelected(int i) { QPoint p = pointFromInt(i); return (isValid(p) && (stateOf(p) == Board::blueColor(bluePlays())) && (pieceCanMove(p))); }
bool Board::canBeSelected(const QPoint& p) const { return (isValid(p) && (caseAt(p).topIsBlack() == blackPlays()) && (pieceCanMove(p))); }