You should defer any thoughts about the solution domain.
Model the nouns in your domain. For example, you should have classes for Player, Monster, Playing Field, etc. Design a state machine for each class and think about which events each class sends to other classes.
Once you get that sorted out, then allocate operations to those classes. Finally, trigger those operations with events (Mealy) or states (Moore) from your state machines. I think the Moore model will be best for you. When you have that framework, start filling in method bodies, replacing log messages with real code.