bool MiniBlock::turnLeftAbleStep(int step) { // Point curPosition = this->toBoardCoordinate(); // Point newPosition = Point(curPosition.x - step , curPosition.y); // // if( newPosition.x >= FIELD_LEFT_BOARD && newPosition.y <= FIELD_TOP) // { // bool isMoveAble = !(this->getGameBoard()->isPointOccupied(newPosition)); // return isMoveAble; // } // else if(newPosition.x < FIELD_LEFT_BOARD) // { // if (getBlockDefinition()._isOccupOrEmpty == OCCUPIED) // { // return false; // } // else return true; // } Point curPosition = this->toBoardCoordinate(); bool leftAble = false; for (int i = step ; i >= 1; i--) { Point newPosition = Point(curPosition.x - 1 , curPosition.y); if( newPosition.x >= FIELD_LEFT_BOARD && newPosition.y <= FIELD_TOP) { leftAble = !(this->getGameBoard()->isPointOccupied(newPosition)); if (!leftAble) { return false; } } else if(newPosition.x < FIELD_LEFT_BOARD) { if (getBlockDefinition()._isOccupOrEmpty == OCCUPIED) { return false; } else { leftAble = true; } } else leftAble = true; if (leftAble) { curPosition.x -= 1; } } if (!leftAble) { return false; } else return true; }
bool MiniBlock::turnDownAble() { //TODO Point curPosition = this->toBoardCoordinate(); Point newPosition = Point(curPosition.x, curPosition.y - 1); if (newPosition.y >= FIELD_BOTTOM && newPosition.y <= FIELD_TOP) { bool isMoveable = !(this->getGameBoard()->isPointOccupied(newPosition)); return isMoveable; } else if (newPosition.y < FIELD_BOTTOM) { if (getBlockDefinition()._isOccupOrEmpty == OCCUPIED) { return false; } else return true; } else if (newPosition.y > FIELD_TOP) { return true; } }
bool BlockGhost::init() { if (!Block::init()) { return false; } createByDef(getBlockDefinition()); return true; }
std::string BlockGhost::getBlockFileName() { std::string file_name; if (getBlockDefinition()._isOccupOrEmpty == EMPTY) { file_name = "blockEmpty.png"; } else { file_name = "blockGhost.png"; } return file_name; }
bool MiniBlock::turnRightAble() { Point curPosition = this->toBoardCoordinate(); Point newPosition = Point(curPosition.x + 1 , curPosition.y); if (newPosition.x <= FIELD_RIGHT_BOARD && newPosition.y <= FIELD_TOP) { bool isMoveAble = !(this->getGameBoard()->isPointOccupied(newPosition)); return isMoveAble; } else if (newPosition.x > FIELD_RIGHT_BOARD) { if (getBlockDefinition()._isOccupOrEmpty == OCCUPIED) { return false; } else return true; } else return true; }
Point MiniBlock::toBoardCoordinate() { this->setParentCenter(); Point center = this->getParentCenter(); // CCLOG("%f,%f,my getParentCenter", center.x, center.y); int coodinate_x = getBlockDefinition()._coordinateX < 2 ? center.x - (2 - getBlockDefinition()._coordinateX) : center.x + (getBlockDefinition()._coordinateX - 2); int coodinate_y = getBlockDefinition()._coordinateY < 2 ? center.y + (getBlockDefinition()._coordinateY - 2) : center.y - (2 - getBlockDefinition()._coordinateY); // CCLOG("%d,%d,my coodinate", coodinate_x, coodinate_y); return Point(coodinate_x, coodinate_y); }
bool MiniBlock::turnRightAbleStep(int step) { // Point curPosition = this->toBoardCoordinate(); // Point newPosition = Point(curPosition.x + step , curPosition.y); // // if (newPosition.x <= FIELD_RIGHT_BOARD && newPosition.y <= FIELD_TOP) { // bool isMoveAble = !(this->getGameBoard()->isPointOccupied(newPosition)); // return isMoveAble; // } // else if (newPosition.x > FIELD_RIGHT_BOARD) // { // if (getBlockDefinition()._isOccupOrEmpty == OCCUPIED) // { // return false; // } // else return true; // } Point curPosition = this->toBoardCoordinate(); bool rightAble = false; for (int i = 1 ; i <= step; i++) { Point newPosition = Point(curPosition.x + 1 , curPosition.y); if( newPosition.x <= FIELD_RIGHT_BOARD && newPosition.y <= FIELD_TOP) { rightAble = !(this->getGameBoard()->isPointOccupied(newPosition)); if (!rightAble) { return false; } } else if(newPosition.x > FIELD_RIGHT_BOARD) { if (getBlockDefinition()._isOccupOrEmpty == OCCUPIED) { return false; } else { rightAble = true; } } // else if (newPosition.y > FIELD_TOP+1 ) // { // return false; // } else rightAble = true; if (rightAble) { curPosition.x += 1; } } if (!rightAble) { return false; } else return true; }