What colours can rocky planets (or moons) have I am currently working on a simple program to randomly generate and display rocky exoplanets (for a space based strategy game), but I am having some problems figuring out what colour the rocks of rocky planets may or may not have.
Specifically, I am thinking of what natural colours may be so dominantly found on the surface of a planet or moon, that the whole planet or moon, seen from space would seem to be (completely or partially) that colour, which is not made out of ice, and which neither has oceans nor life.
As far as I can tell from looking at pictures of the not lifebearing rocky planets, dwarf planets and moons in our solar system, it seems that red and yellow colors are dominant on larger bodies such as Mars, Venus or Io (maybe because their atmosphere cause oxidation of metals on the surface, or in Io's case volcanic activities as pointed out by Phiteros):

All while smaller bodies such as the Moon or Ceres are completely grey:

Therefore my current approach is to make sure the red component of the RGB colour of the planets is the biggest, the green the second biggest and the blue the smallest.
However just the fact that there aren't any rocky planets or moons in our solar system made of blue and green rock, doesn't mean that they can't possibly exist.
Therefore my question is: is my assumption that rocky planets tend to be mostly red or yellow correct, or are there any good logical arguments for that predominantly blue, green or purple rocky planets could exist.
Edit
Maybe i was a little to vargue on defining colour; i was thinking about the »diffuse colour« (sometimes called »albedo colour«) input, used in the openGL shader that i am using to display the planets; this colour is however the same as something not very reflective (like planets) has when under white light.
I'll begin by saying that for exoplanets, the answer to your question is an active area of research, and currently there are no observational constraints on what rocky exoplanets would look like to the human eye.

Also, this may be a lot more complicated an answer than what you want for a computer game.

If you want to hunt around for this in the astronomical or planetary science literature, what you're trying to do is determine the reflectance, or albedo spectrum, of the planet. That's what tells you how much of the incoming light is bounced back off the surface for you to see as function of wavelength. Note that this assumes the planet is not hot enough to thermally emit in the optical, which will only start to matter if it's >3000K or so. This albedo spectrum is determined by the surface properties of the planet: what it's made out of, how shiny it is, the scattering properties, etc.

Once you have an albedo spectrum, you then can multiply it be the incoming radiation from whatever primary star you've chosen. That's what will make a planet seem slightly more orange around an M-dwarf, and more "normal" around a Sun-like star.

To get to how a person would see it, you'd then need to then multiply that resulting reflected-light spectrum by the spectral sensitivity of the human eye, and then convert that final observed spectrum into a color.

For the planetary albedo spectrum, there aren't a lot of sources in the astronomical literature. The best I can find is this paper. You'll probably have more luck looking through Solar System planetary stuff.

For the stellar spectra, you can try here, but that presumes you're comfortable with astronomical FITS files. For stars hotter than >4500K (the Sun is 5800K), you can probably just assume that the incoming radiation into the planet's surface is blackbody of whatever temperature you want.

Unfortunately, I am not familiar with the spectral sensitivity of the human eye, or how to go from an input observed spectrum to a single color value.