Ich würde auch das Spielfeld als ein Bild zeichnen und auf einem Image anzeigen. Die Figuren würde ich immer, wenn sie neu positioniert werden, neu auf das Grundbild zeichnen/kopieren. Dazu könntest du z.B. zwei Bilder vorhalten; eines das angezeigt wird und ein zweites, das neu gezeichnet wird. Nach dem Neuzeichnen schaltest du zwischen den beiden um. Damit kannst du Flackern vermeiden.
Für die Spielfelder würde ich zunächst mal einen entsprechenden Record deklarieren:
z.B.
Delphi-Quellcode:
TEinzelfeld = record
Spieler: Integer; //0=Feld ist unbesetzt, 1=Spieler 1 usw.
X,Y: Integer; //Koordinate, an der die Spielfigur später gezeichnet wird
end;
Das gesamte Spielfeld ist dann ein Array [1..?] of TEinzelfeld.
In der Zeichenroutine für das Spielfeld musst du jetzt nur das Array durchgehen und abhängig vom Spieler einen Spielstein in der richtigen Farbe zeichen/kopieren.