I don't really see it being more efficient. They've already stated that they're using a board (an array of characters), because since this is text based, they have to have something to represent what's going on. So manipulating bits really isn't going to do anything other than waste time. (Not that bitwise operations are slow, it's just unneeded.)
Consider the following:
Code:
[xx][xx][xx][xx][xx][xx][xx][xx][xx][xx]
[xx] [xx]
[xx] [xx]
[xx] [xx]
[xx] [xx]
[xx] [xx]
[xx] [xx]
[xx] [xx]
[xx] [xx]
[xx][xx][xx][xx][xx][xx][xx][xx][xx][xx]
Here's our board. I'll use the standard Monopoly style board, because it's easy for me to quickly draw using ascii. Some place in your program you're going to have a "drawboard" function. It's really quite simple:
Code:
for each section of the board:
if( character_is_here )
draw_character_representation();
else
draw_board_section( here );
So if we were to start with this one, drawing them square by square, we'd start in the upper left. If I was there, you'd draw "[Q.]", if not, you'd draw "[xx]". Then you'd move on to the next piece. If I was there, you'd draw "[Q.]". If not, you'd draw "[xx]", and so on.
This can be even simpler if you've got objects which store their own symbol. Assuming you've got some classes, or even if you don't, you can have each player and each board piece contain the information for that type of piece. For example, my piece would be [Q.]. Pink pieces would be [Pk] or what not. Then you invoke something like:
Code:
board::drawboard()
{
for each piece in the board list
if( thispiece.isoccupied() )
thispiece.draw( (thispiece.getplayer()).getsymbol() );
else
thispiece.draw( thispiece.getsymbol() );
}
It's a crude example, but the point should be easy enough to follow. The hard part is figuring out what to do if you have more than one person on the same square.
Quzah.