I think this will reveal your intention better
Ok, I'm starting to get this.

You should never have a method that returns "black", "white" or true.
It is very unexpected for somebody to get different data types in the
response.
Ok, This is a bit long. You created a class tree for pieces:
That's ok. But use it. Knowing the color of a piece probably
belongs to the piece class.

You created that hash to make your life more comfortable. That's
awesome but it would be incredible if, instead of storing strings
you stored objects there. Then everything would be really easier and
more object oriented.

I created that factory class. I will explain tomorrow what's that
in case you don't already know. ;)