I'm making a text based game in C++, but I've hit a snag. I have three classes, plus the driver program. One class is for the player, one for monsters, and one for battle related functions.
My question is, what would be the best way to split up the functions between the classes? Right now I have the variables and functions that create and store all data for the player character (typical RPG style stats, the player menu for commands like move, inventory, etc.), the inventory, and the structs I use to create weapons and armor in the player class. I have a similar class for creating monsters.
I originally intended to put all of the functions related to fighting in the battle class, but then it occurred to me that I'll need all of the data of the player and monsters for the fight function. So, I wrote the main fight function in the driver program, where I create the player and monster objects, and therefore have access to the private member variables of each. However, since I have the "move" command in the player menu (which is in the player class), and it calls a random encounter function, and I want the fight function to be called if a random encounter happens (but the fight function is declared in the driver program), I'm stuck.
So, what I need is advice on what the best practice would be for where to declare the fight function.