コード例 #1
0
ファイル: MiniBlock.cpp プロジェクト: reddevil138/BrainDots
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;
}
コード例 #2
0
ファイル: MiniBlock.cpp プロジェクト: reddevil138/BrainDots
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;
    }
}
コード例 #3
0
ファイル: BlockGhost.cpp プロジェクト: TheWindShan/Blocks
bool BlockGhost::init()
{
	if (!Block::init())
	{
		return false;
	}

	createByDef(getBlockDefinition());
	return true;

}
コード例 #4
0
ファイル: BlockGhost.cpp プロジェクト: TheWindShan/Blocks
std::string BlockGhost::getBlockFileName()
{
	std::string file_name;

	if (getBlockDefinition()._isOccupOrEmpty == EMPTY)
	{
		file_name = "blockEmpty.png";
		
	}
	else
	{
		file_name = "blockGhost.png";
	}
	return file_name;
}
コード例 #5
0
ファイル: MiniBlock.cpp プロジェクト: reddevil138/BrainDots
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;
}
コード例 #6
0
ファイル: MiniBlock.cpp プロジェクト: reddevil138/BrainDots
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);
}
コード例 #7
0
ファイル: MiniBlock.cpp プロジェクト: reddevil138/BrainDots
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;
}