Share via


TilePuzzle Sample: Demonstrates Interoperability Between C# and C++

The TilePuzzle sample demonstrates several major Visual C++ features:

  • The sample is comprised of components implemented with several new technologies: C++, C#, and the new COM-related attributes.

  • The sample demonstrates interoperability between managed components (written with 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 C++ and the .NET Framework classes.

Security noteSecurity Note:

This sample code is provided to illustrate a concept and should not be used in applications or Web sites, as it may not illustrate the safest coding practices. Microsoft assumes no liability for incidental or consequential damages should the sample code be used for purposes other than as intended.

To get samples and instructions for installing them:

  • On the Visual Studio Help menu, click Samples.

    For more information, see Visual Studio Samples.

  • The most recent version and complete list of samples is available online from the Visual Studio 2008 Samples page.

  • You can also locate samples on your computer's hard disk. By default, samples and a Readme file are copied into a folder under \Program Files\Visual Studio 9.0\Samples\. For Express editions of Visual Studio, all samples are located online.

Building and Running the Sample

To build and run TilePuzzle using Visual Studio

  1. In the Visual Studio IDE, load the solution file PUZZLE.sln.

  2. In Solution Explorer, right-click the PUZZLE solution.

  3. On the shortcut menu, click Build Solution.

  4. 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:

Tile Puzzle Architecture graphic

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.

Classes

The sample demonstrates the following classes:

  • System.Windows.Forms.Form – Implements the AboutForm object found in the PUZZLE project.

  • System.Object – Implements the GameLevelEnum object found in the PUZZLE project.

  • System.Delegate – Implements the SolveThreadProcDlg object found in the PUZZLE project.

See Also

Reference

String

Array

gcnew

Classes and Structs (Managed)

Assert

Int32

Other Resources

Interoperability Samples