finite state machine class explosion
I am using state machine with one class for state I have a ground cat and flying cat enemy they both have patrol ,attack , and run away. now I realised that I cant reuse their class
Could you elaborate on this? This sentence doesn't suggest re-use is impossible, on the contrary, they seem to have all kinds of behaviour in common.
If re-use isn't possible, maybe you didn't abstract at the right level? What if you consider flying to be "ground at high altitude"? (or driving as "flying at 0 altitude"?)
I cant use heirarchy because they dont have member viriables
Huh? Class hierarchy can exist even if you don't have data. I don't understand your problem sufficiently to say whether inheritance is the right solution, but lack of member variables shouldn't be the problem (if they were, just add a few dummy ones, and you would be done, right?)
cause all they do is call public functions from the cat and flying cat controller
This sounds to me like you actually want composition. Can you split common parts off, and make it a sub-object?
Nobody says an object cannot consist of several sub-objects internally.
I am not sure if this is relevant to you, but, as of late i have been learning about finite state machines and their use in Python. I came across this example which together with my tutor we determined that it seems to be dynamically able to add and execute functions on the fly for use within the machine (we think...i am still new to this so i do apologise if that is wrong). It might be an example that is unrelated to game design but it might be able to help you in figuring out a more dynamic way to handle your issue?
If your problem is that the ground cat and the flying cat cannot share the same state classes (i.e. you don't have a patrol state, but a flying patrol state and a ground patrol state) you are probably making the states depend on excessively concrete details of the cats (for example, the controllers explicitly flap wings and walk legs instead of asking an abstract cat interface to go somewhere).
Find a suitable interface for your cats (and presumably for other enemy types) with the operations your controllers need, and your controllers would be able to do their best with any creature (for example, the flying cat is likely to patrol faster and see ground enemies further, but it can patrol by going through a cyclical sequence of waypoints exactly like the ground cat).
Omae Wa Mou Shindeiru