mirror of
git://git.savannah.nongnu.org/eliot.git
synced 2024-12-27 09:58:08 +01:00
Bag: add a contains() convenience method
This commit is contained in:
parent
bfcc7a80c6
commit
a13f7d2968
4 changed files with 11 additions and 5 deletions
|
@ -82,7 +82,7 @@ unsigned Bag::getNbConsonants() const
|
||||||
|
|
||||||
void Bag::takeTile(const Tile &iTile)
|
void Bag::takeTile(const Tile &iTile)
|
||||||
{
|
{
|
||||||
ASSERT(count(iTile),
|
ASSERT(contains(iTile),
|
||||||
"The bag does not contain the letter " + lfw(iTile.getDisplayStr()));
|
"The bag does not contain the letter " + lfw(iTile.getDisplayStr()));
|
||||||
|
|
||||||
m_tilesMap[iTile]--;
|
m_tilesMap[iTile]--;
|
||||||
|
|
|
@ -48,6 +48,12 @@ public:
|
||||||
/// Count how many tiles identical to iTile are available in the bag
|
/// Count how many tiles identical to iTile are available in the bag
|
||||||
unsigned count(const Tile &iTile) const;
|
unsigned count(const Tile &iTile) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if the bag contains the given letter.
|
||||||
|
* This is a shortcut for: count(iTile) != 0
|
||||||
|
*/
|
||||||
|
bool contains(const Tile &iTile) const { return count(iTile); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return how many tiles/vowels/consonants are available
|
* Return how many tiles/vowels/consonants are available
|
||||||
* Warning: b.getNbVowels() + b.getNbConsonants() != b.getNbTiles(),
|
* Warning: b.getNbVowels() + b.getNbConsonants() != b.getNbTiles(),
|
||||||
|
|
|
@ -111,7 +111,7 @@ void GameMoveCmd::playRound()
|
||||||
{
|
{
|
||||||
// Is the represented letter still available in the bag?
|
// Is the represented letter still available in the bag?
|
||||||
const Tile &t = m_round.getTile(i).toUpper();
|
const Tile &t = m_round.getTile(i).toUpper();
|
||||||
if (bag.count(t))
|
if (bag.contains(t))
|
||||||
{
|
{
|
||||||
bag.replaceTile(Tile::Joker());
|
bag.replaceTile(Tile::Joker());
|
||||||
bag.takeTile(t);
|
bag.takeTile(t);
|
||||||
|
|
|
@ -348,7 +348,7 @@ PlayedRack Game::helperSetRackRandom(const PlayedRack &iPld,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2) If there was no joker, we add one if possible
|
// 2) If there was no joker, we add one if possible
|
||||||
if (!jokerFound && bag.count(Tile::Joker()))
|
if (!jokerFound && bag.contains(Tile::Joker()))
|
||||||
{
|
{
|
||||||
jokerAdded = true;
|
jokerAdded = true;
|
||||||
pld.addNew(Tile::Joker());
|
pld.addNew(Tile::Joker());
|
||||||
|
@ -356,7 +356,7 @@ PlayedRack Game::helperSetRackRandom(const PlayedRack &iPld,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3) Remove all the jokers from the bag, to avoid taking another one
|
// 3) Remove all the jokers from the bag, to avoid taking another one
|
||||||
while (bag.count(Tile::Joker()))
|
while (bag.contains(Tile::Joker()))
|
||||||
{
|
{
|
||||||
bag.takeTile(Tile::Joker());
|
bag.takeTile(Tile::Joker());
|
||||||
}
|
}
|
||||||
|
@ -491,7 +491,7 @@ PlayedRack Game::helperSetRackRandom(const PlayedRack &iPld,
|
||||||
|
|
||||||
// If the bag does not contain the letter anymore,
|
// If the bag does not contain the letter anymore,
|
||||||
// simply keep the joker in the rack.
|
// simply keep the joker in the rack.
|
||||||
if (bag.count(replacingTile))
|
if (bag.contains(replacingTile))
|
||||||
{
|
{
|
||||||
// The bag contains the replacing letter
|
// The bag contains the replacing letter
|
||||||
// We need to swap the joker (it is necessarily in the
|
// We need to swap the joker (it is necessarily in the
|
||||||
|
|
Loading…
Reference in a new issue