当前位置: 首页>>代码示例>>C++>>正文


C++ board::board_update方法代码示例

本文整理汇总了C++中board::board_update方法的典型用法代码示例。如果您正苦于以下问题:C++ board::board_update方法的具体用法?C++ board::board_update怎么用?C++ board::board_update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在board的用法示例。


在下文中一共展示了board::board_update方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: max_value

int max_value(board b, int d, int player, int pos)
{
	int alpha = -9999;
	bool turn = b.board_update(player, pos);
	if (!turn && (d == depth))
	{
		if (b.terminal_check()) b.end_game(player);
		print_minimax(player, pos, d, evaluation(b));
	}
	if (turn)
	{
		int beta = 9999;
		print_minimax(player, pos, d, beta);
		if (b.terminal_check())
		{
			b.end_game(player);
			beta = evaluation(b);
			print_minimax(player, pos, d, beta);
			return beta;
		}
		for (int i = 2; i <= b.b_size / 2; i++)
		{
			if (b.board_value(player, i) == 0) {}
			else
			{
				beta = min(beta, max_value(b, d, player, i));
				print_minimax(player, pos, d, beta);
			}
		}
		return beta;
	}
	else if (d != depth)
	{
		print_minimax(player, pos, d, alpha);
		if (b.terminal_check())
		{
			b.end_game(player);
			alpha = evaluation(b);
			print_minimax(player, pos, d, alpha);
			return alpha;
		}
		vector<int> a(1);
		for (int i = 2; i <= b.b_size / 2; i++)
		{
			if (b.board_value((player + 1) % 2, i) == 0) {}
			else
			{
				alpha = max(alpha, min_value(b, d + 1, (player + 1) % 2, i, false, 0, a));
				print_minimax(player, pos, d, alpha);
			}
		}
	}
	else alpha = evaluation(b);
	return alpha;
}
开发者ID:sharathppss,项目名称:Mancala_gameplaying,代码行数:55,代码来源:Mancala-v1.cpp

示例2: min_value_purn

int min_value_purn(board b, int d, int player, int pos, int alpha, int beta, bool state, int level, vector<int> par)
{
	int v = 9999;
	bool turn = b.board_update(player, pos);
	if (!turn && (d == depth))
	{
		if (b.terminal_check()) b.end_game(player);
		print_minimax(player, pos, d, evaluation(b), alpha, beta);
	}
	if (turn)
	{
		int v = -9999;
		int temp, m = -1;
		print_minimax(player, pos, d, v, alpha, beta);
		if (b.terminal_check())
		{
			b.end_game(player);
			v = evaluation(b);
			print_minimax(player, pos, d, v, alpha, beta);
			return v;
		}
		par.insert(par.end(), pos);
		for (int i = 2; i <= b.b_size / 2; i++)
		{
			if (b.board_value(player, i) == 0) {}
			else
			{
				temp = min_value_purn(b, d, player, i, alpha, beta, state, (level + 1), par);
				if (temp > v)
				{
					m = i;
					v = temp;
				}
				if (v >= beta)
				{
					print_minimax(player, pos, d, v, alpha, beta);
					if (state == true)
					{
						struct ele node;
						node.cur = pos;
						node.level = level;
						node.next = m;
						node.parents = par;
						turns.insert(turns.end(), node);
					}
					return v;
				}
				alpha = max(alpha, v);
				print_minimax(player, pos, d, v, alpha, beta);
			}
		}
		if (state == true)
		{
			struct ele node;
			node.cur = pos;
			node.level = level;
			node.next = m;
			node.parents = par;
			turns.insert(turns.end(), node);
		}
		return v;
	}
	else if (d != depth)
	{
		state = false;
		print_minimax(player, pos, d, v, alpha, beta);
		if (b.terminal_check())
		{
			b.end_game(player);
			v = evaluation(b);
			print_minimax(player, pos, d, v, alpha, beta);
			return v;
		}
		for (int i = 2; i <= b.b_size / 2; i++)
		{
			if (b.board_value((player + 1) % 2, i) == 0) {}
			else
			{
				v = min(v, max_value_purn(b, d + 1, (player + 1) % 2, i, alpha, beta));
				if (alpha >= v)
				{
					print_minimax(player, pos, d, v, alpha, beta);
					return v;
				}
				beta = min(beta, v);
				print_minimax(player, pos, d, v, alpha, beta);

			}
		}
	}
	else
	{
		v = evaluation(b);
	}
	return v;
}
开发者ID:sharathppss,项目名称:Mancala_gameplaying,代码行数:96,代码来源:Mancala-v1.cpp

示例3: max_value_purn

int max_value_purn(board b, int d, int player, int pos, int alpha, int beta)
{
	int v = -9999;
	bool turn = b.board_update(player, pos);
	if (!turn && (d == depth))
	{
		if (b.terminal_check()) b.end_game(player);
		print_minimax(player, pos, d, evaluation(b), alpha, beta);
	}
	if (turn)
	{
		int v = 9999;
		print_minimax(player, pos, d, v, alpha, beta);
		if (b.terminal_check())
		{
			b.end_game(player);
			v = evaluation(b);
			print_minimax(player, pos, d, v, alpha, beta);
			return v;
		}
		for (int i = 2; i <= b.b_size / 2; i++)
		{
			if (b.board_value(player, i) == 0) {}
			else
			{
				v = min(v, max_value_purn(b, d, player, i, alpha, beta));
				if (alpha >= v)
				{
					print_minimax(player, pos, d, v, alpha, beta);
					return v;
				}
				beta = min(beta, v);
				print_minimax(player, pos, d, v, alpha, beta);
			}
		}
		return v;
	}
	else if (d != depth)
	{
		print_minimax(player, pos, d, v, alpha, beta);
		if (b.terminal_check())
		{
			b.end_game(player);
			v = evaluation(b);
			print_minimax(player, pos, d, v, alpha, beta);
			return v;
		}
		vector<int> a(1);
		for (int i = 2; i <= b.b_size / 2; i++)
		{
			if (b.board_value((player + 1) % 2, i) == 0) {}
			else
			{
				v = max(v, min_value_purn(b, d + 1, (player + 1) % 2, i, alpha, beta, false, 0, a));
				if (v >= beta)
				{
					print_minimax(player, pos, d, v, alpha, beta);
					return v;
				}
				alpha = max(alpha, v);
				print_minimax(player, pos, d, v, alpha, beta);
			}
		}
	}
	else
	{
		v = evaluation(b);
	}
	return v;
}
开发者ID:sharathppss,项目名称:Mancala_gameplaying,代码行数:70,代码来源:Mancala-v1.cpp

示例4: min_value

int min_value(board b, int d, int player, int pos, bool state, int level, vector<int> par)
{
	int alpha = 9999;
	bool turn = b.board_update(player, pos);
	if (!turn && (d == depth))
	{
		if (b.terminal_check()) b.end_game(player);
		print_minimax(player, pos, d, evaluation(b));
	}
	if (turn)
	{
		int beta = -9999;
		int temp, m = -1;
		print_minimax(player, pos, d, beta);
		if (b.terminal_check())
		{
			b.end_game(player);
			beta = evaluation(b);
			print_minimax(player, pos, d, beta);
			return beta;
		}
		par.insert(par.end(), pos);
		for (int i = 2; i <= ((b.b_size) / 2); i++)
		{
			if (b.board_value(player, i) == 0) {}
			else
			{
				temp = min_value(b, d, player, i, state, (level + 1), par);
				if (temp > beta)
				{
					m = i;
					beta = temp;
				}
				print_minimax(player, pos, d, beta);
			}
		}
		if (state == true && m != -1)
		{
			struct ele node;
			node.cur = pos;
			node.level = level;
			node.next = m;
			node.parents = par;
			turns.insert(turns.end(), node);
		}

		return beta;
	}
	else if (d != depth)
	{
		state = false;
		level = 0;
		print_minimax(player, pos, d, alpha);
		if (b.terminal_check())
		{
			b.end_game(player);
			alpha = evaluation(b);
			print_minimax(player, pos, d, alpha);
			return alpha;
		}
		for (int i = 2; i <= b.b_size / 2; i++)
		{
			if (b.board_value((player + 1) % 2, i) == 0) {}
			else
			{
				alpha = min(alpha, max_value(b, d + 1, (player + 1) % 2, i));
				print_minimax(player, pos, d, alpha);
			}
		}
	}
	else alpha = evaluation(b);
	return alpha;
}
开发者ID:sharathppss,项目名称:Mancala_gameplaying,代码行数:73,代码来源:Mancala-v1.cpp


注:本文中的board::board_update方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。