Exercise: Playing Tower of Hanoi using Stacks and Classes

This exercise is provided to allow potential course delegates to choose the correct Wise Owl Microsoft training course, and may not be reproduced in whole or in part in any format without the prior written consent of Wise Owl.

The answer to the exercise will be included and explained if you attend the Wise Owl course listed below!

Category ==> Visual C Sharp 2010  (65 exercises)
Topic ==> Data structures  (4 exercises)
Level ==> Harder than average
Course ==> Adv C# | Classes & LINQ

You need a minimum screen resolution of about 700 pixels width to see our exercises. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.

This is one to attempt only if you're already comfortable using classes in C#! 

In the Tower of Hanoi, the aim is to get all the discs from the left pole to the right:

Tower of Hanoi

Starting to play the Tower of Hanoi.

The rules are that you can only move the top-most disc in each pile, and you can only put a disc on one which is bigger than it:

A game in progress

A game in progress!

Create your own Tower of Hanoi game.  The answer given uses the following two classes:

Class What it represents
Pole A stack of discs
Disc A single disc on a pole

The answer makes the discs clickable buttons.  You can click with the left or right mouse button on each disc to move it to one of the other two poles.  To attach an event-handler to a dynamically-created button:

// assign event-handler to pick up right and left mouse clicks

b.MouseDown += new MouseEventHandler(MouseDown);

The event-handler would then begin:

private void MouseDown(object sender, MouseEventArgs e)

You may prefer to use a different algorithm to solve this, although the idea of having a stack for each pole seems to work well.

When youi've finished, you could compare your answer with the given one ... 

This page has 0 threads Add post