TilePuzzle Sample: Demonstrates Interoperability Between C# and Managed Extensions for C++
The TilePuzzle sample demonstrates several major Visual C++ features:
- The sample is comprised of components implemented with several new technologies: Managed Extensions for C++, C#, and the new COM-related attributes.
- The sample demonstrates interoperability between managed components (written with Managed Extensions for C++ and C#) and native components (written with C++ using COM attributes).
The sample implements a basic puzzle game called the Tile Puzzle. The sample loads a bitmap, splits the bitmap into any number of tiles (determined by the user), and randomizes the individual tiles. The user then solves the puzzle by sliding individual tiles around until the original picture is displayed. In addition to these features, the sample has the ability to solve the puzzle using heuristic search algorithms written in Managed Extensions for C++ and the .NET Framework classes.
Building and Running the Sample
To build and run TilePuzzle using Visual Studio
- In the Visual Studio IDE, load the solution file PUZZLE.sln.
- In Solution Explorer, right-click the PUZZLE solution.
- On the shortcut menu, click Build Solution.
- On the Debug menu, click Start.
After the project builds successfully, try to solve the puzzle yourself.
Architecture of the Sample
Here is the basic architecture:
Note The save and load game features are not implemented.
To access the native COM component from within the managed .NET Framework objects, the sample uses TLBIMP.EXE to generate a .NET Framework proxy dll.
The sample demonstrates the following classes:
- System.Windows.Forms.Form – Implements the
AboutFormobject found in the PUZZLE project.
- System.Object – Implements the
GameLevelEnumobject found in the PUZZLE project.
- System.Delegate – Implements the
SolveThreadProcDlgobject found in the PUZZLE project.