Setting up basic structure and empty classes
setting up the default board and squares, need to finish setting up players before game sequencing can happen
adding player setup, turn sequencing init, needs turn logic to do anything, needs docstrings
renaming to be more pythonic
added some pretty print stuff as well as logic to the board, added human turn logic and dummy computer logic (just picks first open space), next up is cpu logic and game end scenario detection
updating class docstrings
add docstrings to ALL THE THINGS
checking self for over condition in run() instead of the instance variable. Also, removing size as a param from Board(). 3x3 was too ingrained in other aspects and shouldn't be fiddled with. Additionally removing the need for Board.__len__, I wasn't convinced that using it that way really made sense and it really isn't necessary if we have unused() and know the board is 3x3.
Moved square-getting-logic out of user prompt a level higher to the turn-logic-managing method, move_promptnow only worries about getting user input that exists on the board and returning it.
tictactoe.py
adding a few util methods, reducing repitition of logic on board printing, added a method stub for fork_available() in board and added winning_moves() with the exception of diagonal logic
adding diag logic to winning_moves() and removing a superfluous conditional
diags are doneplete in winning_moves()
last touches for steps 1 and 2, on to forking logic
starting the fork detection logic
wrapping up fork detection including intelligent line-of-sight determination
Step 4. Including a check for force moves
Adding step5, stubbing step 6 and adding a helper for it, fixing a col/row misname and a slight refactor to use a helper previously added
wrapping up step 6
Steps 7 and 8