Mam zadanko z pascala rozwiązac wieze hanoi rekurencyjnie i przedstawic sposób działania w trybie graficznym.

program Wieze_Hanoi; 
uses graph; 
var 
karta,tryb,n,ilK,ypocz,gr,j:integer; 
t :array[1..3,1..12] of integer; 
tw:array[1..3] of integer; 

procedure przeloz_krazek(skad, dokad : integer); 
begin 
tw[dokad]:=tw[dokad]+1; 
t[dokad,tw[dokad]]:=t[skad,tw[skad]]; 
setFillStyle(1,black); 
setColor(black); 
bar(skad*200*110-100,ypocz-tw[skad]*gr,t[skad,tw[skad]]*j,gr); 
t[skad,tw[skad]]:=0; tw[skad]:=tw[skad]-1; 
setFillStyle(1,t[dokad,tw[dokad]]); 
bar(dokad*110-100,ypocz-tw[dokad]*gr,t[dokad,tw[dokad]]*j,gr); 
readLn; 
end; 
procedure przeloz(ile, skad, dokad, roboczy : integer); 
begin 
if ile=1 then przeloz_krazek(skad, dokad) 
else 
begin 
przeloz(ile-1, skad, roboczy, dokad); 
przeloz_krazek(skad, dokad); 
przeloz(ile-1, roboczy, dokad, skad) 
end; 
end; 

begin 
writeln('podaj ilosc krazkow'); 
readln(ilk); 
detectgraph(karta,tryb); 
initgraph(karta, tryb,''); 
writeln('Nacisnij dowolny klawisz'); 
gr:=30; 
j:=19-ilK; 
ypocz:=430; 
for n:=1 to ilK do 
t[1,n]:=ilK-n+1; 
tw[1]:=ilK; 
for n:=1 to tw[1] do 
begin 
setfillstyle(1,t[1,n]); 
bar((1*110-100)+10*n,ypocz-(n*gr),(1*180)-10*n,ypocz-(n*gr)-gr); 
end; 
readLn; 
przeloz(ilK,1,3,2); 
closeGraph; 
end. 

Mam tyle. Program rysuje prostokaty ale ma problem z rysowaniem ich po kazdym następnym ruchu nie wiem jak temu zaradzić i proszę o pomoc.
Z góry dzieki