The code looks good, well commented, which is a pleasant surprise.
One thought on how you've structured the code: the particle system class includes rendering code, and is tied to several other classes such as Sprite, Screen, Color, EngineFunc, etc. To use the ParticleSystem I have to include code for things that I've already created on my own. Have you thought about breaking out the particle system to handle just the particle generation, motion, collision, etc. and leave the rendering/sprite/screen stuff for the parent program (or a particleRenderer class)? That way proggers could drop your particle system into their code without hacking your code, or throwing out their own.
It's more work, and maybe not what you're interested in, but this code looks like it could be a nice self-contained class for general use.