Is it possible to replace an element in a list, with its derived class's object during the game loop(the infinite while loop) and then perform functions on this object that are specific to the derived class? Is this a good idea : creating a new list for the derived objects instead and performing these operations on them? Please give me your views...
If you have to do a dynamic cast, it's generally a bad idea. If you can choose a design the removes the need for dynamic casts, it should (again, generally) be preferred. I say "generally" here because, without the proper know-how or tools, you can end up with convoluted designs that are actually worse than using dynamic casts.
My recommendation: prefer the simplest design that you can come up with that works. If that involves dynamic casts, then so be it. But if someone comes along and suggests that they have a simpler design that doesn't require the dynamic casts, listen closely to their suggestion.