1. Rysujesz szachownicę.
2. Zapisujesz w tablicy gdzie jaki przedmiot/pole jest.
3. Za pomocą gotoxy() (popatrz w necie) ustawiasz odpowiednio na każdym polu kursor i rysujesz odpowiedni z tablicy przedmiot.
4. Ruch masz na zasadzie gotoxy() na miejsce docelowe i tam rysujesz, potem wracasz gotoxy() do poprzedniej pozycji i zamalowujesz odpowiednim przedmiotem/polem z tablicy.
Tutaj dwa przykłady z mojego bardzo starego kodu z Kółko i Krzyżyk (GotoYX() to własna implementacja gotoxy()):
// Rysowanie planszy
for(int p=1; p<=pX; p++)cout<<" "; cout<<LG<<Bx<<Bx<<Bx<<PG<<LG<<Bx<<Bx<<Bx<<PG<<LG<<Bx<<Bx<<Bx<<PG<<endl;
for(int p=1; p<=pX; p++)cout<<" "; cout<<By<<" "<<By<<By<<" "<<By<<By<<" "<<By<<endl;
for(int p=1; p<=pX; p++)cout<<" "; cout<<LD<<Bx<<Bx<<Bx<<PD<<LD<<Bx<<Bx<<Bx<<PD<<LD<<Bx<<Bx<<Bx<<PD<<endl;
// Rysowanie domyślnego pola
Color(8);
GotoYX(3*LY+0+pY,5*LX+pX); cout<<LG<<Bx<<Bx<<Bx<<PG;
GotoYX(3*LY+1+pY,5*LX+pX); cout<<By<<' '<<AreaSign[LY][LX]<<' '<<By;
GotoYX(3*LY+2+pY,5*LX+pX); cout<<LD<<Bx<<Bx<<Bx<<PD;
// Rysowanie aktywnego pola
Color(7);
GotoYX(3*Y+0+pY,5*X+pX); cout<<LG<<Bx<<Bx<<Bx<<PG;
GotoYX(3*Y+1+pY,5*X+pX); cout<<By<<' '<<AreaSign[Y][X]<<' '<<By;
GotoYX(3*Y+2+pY,5*X+pX); cout<<LD<<Bx<<Bx<<Bx<<PD;