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; }
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; } }