/**
**/
:-object hanoi : [bcilib].
var hanoiURL = 'dlp.cs.vu.nl/~ctv/dlptest/hanoi.wrl'.
main :-
init_vrml(hanoiURL,5000),
setDescription('Towers of Hanoi'),
disks(4, peg1,peg2,peg3).
disks(1, P1,P2,_) :-
!,
disk_move(1, P1,P2).
disks(N, P1,P2,P3) :-
N1 is N - 1,
disks(N1, P1,P3,P2),
disk_move(N, P1,P2),
disks(N1, P3,P2,P1).
init_vrml(URL, Delay) :-
loadURL(URL),
sleep(Delay).
disk_move(DiskN, PegFrom, PegTo) :-
getSFVec3f(PegTo, translation, DestX, _, _),
format_to_atom(DiskName, 'disk~w', [DiskN]),
format_to_atom(Move, '~w to ~w', [PegFrom, PegTo]),
setMFString(bboard, text, [DiskName, 'from', Move]),
getSFVec3f(DiskName, translation,_DiskX, DiskY, DiskZ),
setSFVec3f(DiskName, translation, DestX, DiskY, DiskZ),
sleep(2000).
:-end_object hanoi.
/**
**/