I'll work on the simpler problem of :) / :( first. I think that can be done with just minimax
And then maybe win chance for each possible state of a purely random game