void WordPuzzleLayer::arrangeComponents(const char* word, CCArray* boxArray, CCArray* alphabetArray) { float widthOfBlock = this->getBoxImage()->getContentSize().width; //modified by YoungJae Kwon #if (defined PD_IPHONE) float paddingOfCharacter = (585.00/2.0f - 56.00/2.0f) / 6.0f - widthOfBlock; #elif (defined ANDROID_PHONE) float paddingOfCharacter = 111 - 48 - widthOfBlock; #else float paddingOfCharacter = (105) - widthOfBlock; #endif int numberOfCharacter = strlen(word); float firstX = this->getContentSize().width/2 - (paddingOfCharacter + widthOfBlock) / 2 * (numberOfCharacter - 1); for (int i=0; i<boxArray->count(); i++) { CCSprite* blockSprite = (CCSprite*) boxArray->objectAtIndex(i); blockSprite->setPosition(ccp(firstX + (widthOfBlock + paddingOfCharacter) * i, blockY)); } for (int i=0; i<alphabetArray->count(); i++) { LCWordPuzzleAlphabet* alphabetSprite = (LCWordPuzzleAlphabet*) alphabetArray->objectAtIndex(i); alphabetSprite->setPosition(ccp(firstX + (widthOfBlock + paddingOfCharacter) * i, alphaY+(rand() % maxShift)) ); alphabetSprite->setOriginalPosition(alphabetSprite->getPosition()); } // suffle alphabets this->shuffleSprites(alphabetArray); }
void LCWordPuzzleGame::shuffleSprites(CCArray* alphabetSpriteArray) { CCArray *tempArray = CCArray::arrayWithArray(alphabetSpriteArray); CCPoint *tempPosition = (CCPoint *)malloc(sizeof(CCPoint) * alphabetSpriteArray->count()); for (int i=0; i<alphabetSpriteArray->count(); i++) { LCWordPuzzleAlphabet* alphabetSprite = (LCWordPuzzleAlphabet*)tempArray->randomObject(); tempArray->removeObject(alphabetSprite); tempPosition[i] = alphabetSprite->getPosition(); } for (int i=0; i<alphabetSpriteArray->count(); i++) { LCWordPuzzleAlphabet* alphabetSprite = (LCWordPuzzleAlphabet*)m_pCharacterSprites->objectAtIndex(i); alphabetSprite->setPosition(tempPosition[i]); alphabetSprite->setOriginalPosition(tempPosition[i]); } free(tempPosition); }