%Hilfsprogramm zum Turm von Hanoi
%Drei Tuerme mit maximal m Kreisscheiben (gen. Steine) werden gezeichnet.
%Die Groesse und Anzahl der Kreisscheiben ist in den Vektoren 
%Turm1, Turm2, Turm3 gespeichert. 
%Turm1(1) enthaelt den groessten, untersten Stein von Turm1, etc.

%Diese Datei ist vor Benutzung umzubenennen in turmzeichnen.m

function []=turmzeichnen(m,Turm1,Turm2,Turm3,Farbe1,Farbe2,Farbe3);
global mfix;
for Fall=1:3
  t=['Turm=Turm',int2str(Fall),';'];
  f=['Farbe=Farbe',int2str(Fall),';'];
  eval(t); eval(f);
  if Fall==1, Pos=-2*m-1;end;
  if Fall==2, Pos=0;end;
  if Fall==3, Pos=2*m+1;end;
  l=length(Turm);
  if l==0                             %wenn der Turm leer ist
    plot([-m+Pos,m+Pos],[0,0],Farbe); %Basislinie 
    if Fall==1, hold on; end; %if Fall
    plot([Pos,Pos],[0,m],'k');        %senkrechte Mittellinie
    end; %if l
  for j=1:l 
    if Fall==1, hold on; end; %if
    k=Turm(j);                       
    plot([Pos+k,Pos-k],[j-1,j-1],Farbe,...
    [Pos-k,Pos-k],[j-1,j],Farbe,...
    [Pos-k,Pos+k],[j,j],Farbe,...
    [Pos+k,Pos+k],[j,j-1],Farbe);
    fill([Pos-k,Pos-k,Pos+k,Pos+k],[j-1,j,j,j-1],Farbe);
    plot([Pos,Pos],[0,m],'k');
    plot([-m+Pos,m+Pos],[0,0],Farbe);
  end; %for j
  if Fall==3 hold off, axis([-4*m,4*m,-2,m+2]), axis off, end; %if 
end; %for Fall
