void Rack::load(const LetterString &tiles) { for (LetterString::const_iterator it = tiles.begin(); it != tiles.end(); ++it) { if (it != QUACKLE_NULL_MARK) m_tiles += *it; } }
bool Bag::removeLetters(const LetterString &letters) { bool ret = true; const LetterString::const_iterator end(letters.end()); for (LetterString::const_iterator it = letters.begin(); it != end; ++it) if (!removeLetter(*it)) ret = false; return ret; }
LetterString Move::wordTilesWithNoPlayThru() const { LetterString word; LetterString used = usedTiles(); const LetterString::const_iterator end(used.end()); for (LetterString::const_iterator it = used.begin(); it != end; ++it) if (*it != QUACKLE_PLAYED_THRU_MARK) word += QUACKLE_ALPHABET_PARAMETERS->clearBlankness(*it); return word; }
bool Rack::unload(const LetterString &used) { // UVcout << *this << ".unload(" << used << ")" << endl; LetterString newtiles = m_tiles; bool ret = true; LetterString::const_iterator usedEnd(used.end()); for (LetterString::const_iterator usedIt = used.begin(); usedIt != usedEnd; ++usedIt) { bool found = false; LetterString::iterator newEnd(newtiles.end()); for (LetterString::iterator newIt = newtiles.begin(); newIt != newEnd; ++newIt) { if (*newIt == *usedIt) { *newIt = QUACKLE_NULL_MARK; found = true; break; } } if (!found) ret = false; } // UVcout << "newtiles: " << newtiles << endl; m_tiles.clear(); LetterString::const_iterator newEnd(newtiles.end()); for (LetterString::const_iterator newIt = newtiles.begin(); newIt != newEnd; ++newIt) if (*newIt != QUACKLE_NULL_MARK) m_tiles += *newIt; return ret; }
void Bag::toss(const LetterString &letters) { const LetterString::const_iterator end(letters.end()); for (LetterString::const_iterator it = letters.begin(); it != end; ++it) m_tiles.push_back(*it); }