One of the hardest things in developing software is testing its functionality to the limit. There is something inherently difficult about trying to provoke your own code into failing your own tests, but it is absolutely imperative that you cover as many as possible of the scenarios that the app could come up against. Users are so unpredictable.
With a simple app such as this one, this is not such an insuperable task. Play the game over and over, trying to catch not only the usual sequence of actions that you expect your users to go through, but also all those niggly edge cases, such as: