示例#1
0
bool ChessSaver::chess_check(Chess& chess, Chess::PieceType player_type_)
{
	int black_num = 0;
	int white_num = 0;
	Chess::PieceType type;
	int i, j;
	for (i = 0; i < Chess::SIZE; i++)
	{
		for (j = 0; j < Chess::SIZE; j++)
		{
			type = chess.get_point(i, j);
			if (type == Chess::BLACK)
				black_num++;
			else if (type == Chess::WHITE)
				white_num++;
		}
	}
	if (player_type_ == Chess::BLACK)						//мФ╪рж╢╨звсохоб
	{
		if (black_num == white_num)
			return true;
		return false;
	}
	else if (player_type_ == Chess::WHITE)
	{
		if (black_num - 1 == white_num)
			return true;
		return false;
	}
	else
		return false;
}
示例#2
0
bool ChessSaver::save_chess(Chess& chess, Chess::PieceType player_type_)
{
	if (chess_check(chess, player_type_) == false)
		return false;
	ofstream output_file;
	output_file.open(file_name_, ios::out);
	if (output_file.fail())
		return false;
	int i, j;
	Chess::PieceType type;
	try
	{
		for (i = 0; i < Chess::SIZE; i++)
		{
			for (j = 0; j < Chess::SIZE; j++)
			{
				type = chess.get_point(i, j);
				if (type == Chess::BLACK)
					output_file << 1 << " ";
				else if (type == Chess::WHITE)
					output_file << -1 << " ";
				else
					output_file << 0 << " ";
				if (output_file.fail() || output_file.bad())
				{
					output_file.close();
					return false;
				}
			}
			output_file << endl;
		}
		if (player_type_ == Chess::BLACK)
			output_file << "black";
		else if (player_type_ == Chess::WHITE)
			output_file << "white";
		else
		{
			output_file.close();
			return false;
		}
		output_file.close();
		return true;
	}catch (exception e) {
		cout << e.what() << endl;
		output_file.close();
		return false;
	}
}