Improving the game
There is a great amount of improvements that we could make to the game. It can however get complex pretty fast, so it is important to be comfortable with the basics of the programming language used before really getting into big projects.
Learning to code in C++
After reading this introduction, if you wish to learn to code in C++, you will find a complete C and C++ course here. Note that C and C++ are both distinct programming languages, but C++ can be seen as an extension to C. It possesses all the features of the C language, but it additionally provides its own tools.
A list of possible improvement to the game
The collisions are handled roughly: Even though the sprites are not rectangular (Because parts of the textures are transparent), we test the collisions as if they were. We could handle the collisions more precisely or even perfectly (At a pixel level), but it is way more complex.
We display shadows, but in a very simple way. We could have simulated lighting by making objects closer to light sources brighter and those more distant, darker. In that case, each light source should cast its own shadows on the objects close to it, so each object could have had more than one shadow.
We could have made more complex animations (Example: Display as set of textures, when the player attacks, to simulate movement, instead of only one).
We could have coded a graphical interface (A menu, an inventory, a spell book...).
There are an infinite amount of features that we could have added to the game (A level system, a talent system, items, spells...).