Example #1
0
function * applyRuleFilters(bid, board, vulnerability, context) {
	return yield coArray(rules)
		.every(function * (rule) {
			return yield Promise.resolve(rule.filter(bid, board, vulnerability, context));
		})
		.result;
}
Example #2
0
function * generateBid(gameState) {
	let vulnerability = 0;
	let game = new GameQuery(gameState);

	let context = {};
	let candidates = game.currentBoard.getLegalBids();
	candidates = candidates.filter(bid => bid.type === BidType.Call);

	candidates = yield coArray(candidates)
		.filter(function * (bid) {
			return yield applyRuleFilters(bid, game.currentBoard, vulnerability, context);
		})
		.result;

	candidates = yield * applyConventions(candidates, game.currentBoard, vulnerability, context);

	let bid = choose(candidates);
	return bid;
}