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