コード例 #1
0
ファイル: bag.cpp プロジェクト: cdhowie/Quackle
void Bag::exch(const Move &move, Rack &rack)
{
	LetterString usedTiles(move.usedTiles());
	rack.unload(usedTiles);

	refill(rack);
	toss(usedTiles);                                                                                                                        
}
コード例 #2
0
ファイル: bag.cpp プロジェクト: cdhowie/Quackle
LetterString Bag::refill(Rack &rack, const LetterString &drawingOrder)
{
	LetterString ret(drawingOrder);

	for (int number = QUACKLE_PARAMETERS->rackSize() - rack.tiles().length(); number > 0 && !m_tiles.empty(); --number)
	{
		if (drawingOrder.empty())
			rack.setTiles(String::alphabetize(rack.tiles() + pluck()));
		else
		{
			removeLetter(String::back(ret));
			rack.setTiles(String::alphabetize(rack.tiles() + String::back(ret)));
			String::pop_back(ret);
		}
	}

	return ret;
}
コード例 #3
0
ファイル: catchall.cpp プロジェクト: quackle/quackle
double CatchallEvaluator::endgameResult(const GamePosition &position, const Move &move) const
{
	Rack leave = position.currentPlayer().rack() - move;

	if (leave.empty())
	{
		double deadwood = 0;
		for (PlayerList::const_iterator it = position.players().begin(); 
		     it != position.players().end(); ++it)
		{
			if (!(*it == position.currentPlayer()))
			{
				deadwood += it->rack().score();
			}
		}

		return deadwood * 2;
	}

    return -8.00 - 2.61 * leave.score();
}
コード例 #4
0
ファイル: bag.cpp プロジェクト: cdhowie/Quackle
void Bag::refill(Rack &rack)
{
	for (int number = QUACKLE_PARAMETERS->rackSize() - rack.tiles().length(); number > 0 && !m_tiles.empty(); --number)
		rack.setTiles(String::alphabetize(rack.tiles() + pluck()));
}
コード例 #5
0
ファイル: rack.cpp プロジェクト: domino14/quackle
bool Rack::equals(const Rack &rack) const
{
	return alphaTiles() == rack.alphaTiles();
}
コード例 #6
0
ファイル: rack.cpp プロジェクト: domino14/quackle
const Rack operator-(const Rack &rack1, const Rack &rack2)
{
	Rack ret(rack1);
    ret.unload(rack2.tiles());
    return ret;
}