a pointer to a base class is supposed to mean that you don't care what the derived type is
For example, if both "draw" and "write" actually just draw the thing, they should both be called just that (and not separate names for no reason)
In games generally the game objects do not draw themselves. (...) Game objects are generally worked on as a tree.
all UI elements should simply have Draw()/Paint()/Render()/Display() function which each subclass implements; whether its plain text, sprites, or a container of other elements, there is no need to have a different function name when the intention is the same - in each case, you are just trying to display the element for the user.
Good stuff to keep in mind. Thanks.
You could go the route of a text adventure game (plus GUI)
I am considering that. Perhaps I should just do it and get to work...