VISUAL C# EXERCISES▼
- Creating forms (4)
- Coding form events (1)
- Laying out your code (2)
- C# variables (4)
- Enumerations and constants (2)
- Conditions (2)
- Modular code (3)
- Arrays (2)
- Looping (2)
- Files and folders (3)
- Properties in C# (3)
- Using lists (3)
- Validating forms (6)
- Toolbars, menus and status bars (1)
- FileDialogs and StreamReaders (1)
- Debugging and trapping errors (1)
- Introduction to DataGridViews (1)
- DataGridView events (3)
- Complex DataGridViews (2)
- Creating classes (4)
- The form as a class (1)
- Data structures (6)
- Inheritance (5)
- Interfaces (2)
- Delegates and events (2)
- Writing LINQ (2)
- Advanced LINQ (2)
- Entity Frameworks (1)
- LINQ with Entity Frameworks (4)
- Grouping using LINQ (2)
- LINQ to SQL (2)
Visual C# | Data structures 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.
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:
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!
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 ...