Try making your own version before lookin at my final version that uses the textbook implemetation. I would instead look at the bad version to know what works, but is self admittedly lazy at the same time.
the second algorithm I've ever "written." play Tic Tac Toe vs a cpu, starting player is random. can be changed to play cpu vs cpu. both the "bad" and "good" versions of the cpu can be played
I have 2 different cpu's, nether can beat the other. both are completely different approaches to writing the algorithm which will tie or beat each other. Nothing can win against the min maxing CPU and it can't beat the move pruning CPU, they just tie. However, humans can beat the move pruning CPU and it can also beat itself. This was to demonstrate that minmax is sufficient for optimal play, but not necessary to win.