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;
}
Exemple #3
0
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)));
}