Please sign in to comment.
Break down procedure into several helper functions.
At this point, reading Game#play is much more revealing than before, and the general structure of the application has improved. It is possible to try out some of these features in isolation and is now easier to do manual testing. But this is still essentially procedural code in an object oriented technicolor dream coat. Automated testing would be tedious as-is because of the mixture of presentation / control code and logic. A re-design of the code is in order, replacing the many procedures that operate on data such as the board with single purpose objects. That's what we'll start on next.