My poor memory, full of leaks
, when you use "new" you have to use "delete" to free the memory.
The program is doing exactly what you made it to do, so to simply answer your question:
Extra images appear on top of the screen because in code its made that way.
Some issues: Use STL library for memory management if you are new to c++.
on sf::RenderWindow use function w.setFramerateLimit(60); because i had too many frames.
You also never clear screen at beginning of while loop, therefore you have so many images on screen w.clear();
All of this things can be found in the "TUTORIAL" of SFML, if you read through it, you will know all of this, i suggest you do that.
About the random sprites at 0,0 position. I did not examine the code, i just gave it a look. I suspect you do it in this order: Make warrior, draw warrior, set warrior position. (Thus the warrior will be drawn at 0,0 position first time, that is the default value, next frame he will be drawn at pos you wanted to)
TL;DR Read tutorial, everything you asked in few posts can be found there, also use STL library