1. Please check out [url=http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=178.0]Browian motion[/url] if you really want to add collision between particles.

The above applet take care of collision between  all particles. However, adding above effect would not make much different result from the simulation. It will need more time to calculate possible collision between any two particles.
A loop with 400*400 checking for collision.

You can add [b]Maxwell distribution of speeds[/b] , however, it only make sense if you have enough number of particles.
Otherwise, it would not make the simulation better (it might be even worse).
If you increase number of particles to 4000, the computational time will increase 100 times compared to 400 particles.

We can add more physics conditions into simulation, but does it make the simulation better for teaching purpose.
If you want to simulate physics effect, then it is another story.

Make up your mind : what is the purpose of the simulation?  What is the goal for the simulation?
What you want the user to learn from the simulation?

Sometime, it will become more difficult for students if too complex variables are introduced to the model.
Adding all the features together might not be a better solution.