Also Deine Hausaufgabe macht hier niemand aber über Quelltext und fragen darüber können wir gerne sprechen.
Mein Ansatz wäre wahrscheinlich ein sehr einfacher.
Hab ein Record das alles bereitstellt was ein "Stab" haben kann, sprich, was kann es empfangen und halten, in deinen fall maximal 3 verschiedene Elemente, die "Scheiben".
Lege von diesen Record ein Array an für die Anzahl aller "Stäbe".
Gebe dem ersten Array Element alle "Scheiben" in korrekter Reihenfolge.
Mehr Logic ist eigentlich nicht von Nöten, Du musst halt nur auswerten welcher "Stab" was bereitstellt, und zwar immer nur das was "oben" liegt, sprich, das letzte element im "Stab-Record".
Eine simple "bewege das letzte Element von Stab X nach Stab Y" Logik und eine simple "ist die Reihenfolge in Stab Z korrekt/erreicht" abfrage, mehr braucht man nicht.
(Natürlich sollte die Logik auch eine "Existiert überhaupt eine Scheibe im Stab X" Methode bieten um festzustellen ob der gewünschte Spielzug durchgeführt werden kann)
Die von mir beschriebe Vorgehensweise kannst Du natürlich in eine Klasse reinprogrammieren die dann zu jedem Zeitpunkt weiß "wo was ist".
Der Klasse spendierst Du dann noch eine "Leg los"-Methode die dann die oben genannte Logik durchführt.
Wie Du das ganze graphisch umsetzt ist Dir überlassen.
Hier mein Einstieg, mach was draus
Delphi-Quellcode:
Type
TDisks = (dNothing, dLarge, dMedium, dSmall);
TRod = record
Top: TDisks;
Middle: TDisks;
Bottom: TDisks;
end;
TRods = array [0..2] of TRod;