I wasn't able to play it at first cause I was getting an exception but doing this seemed to work for me.
In the revealBoard with the conditional statement check if the cell has already been revealed so it doesn't have to recount its mine near count.
void revealBoard(Game* game, int row, int col)
{
if (game->display[row][col] != '.' || game->minefield[row][col] == '*') { // Check if cell is a mine
}
I enjoyed it nice game!