TilePuzzle Sample: Visual J# and Managed Extenstions for C++ Interoperability
This sample demonstrates interoperability between managed components (written with Visual C++ and Visual J#) 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 Visual C++ and the .NET Framework classes.
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.
Building and Running the Sample
To open the sample file in Solution Explorer
Click Download Sample.
The File Download message box appears.
Click Open, and on the left column of the zip folder window, click Extract all files.
The Extraction Wizard opens.
Click Next. You can change the directory that the files will be extracted to, and then click Next again.
Make sure that the Show extracted files check box is selected, and click Finish.
Double-click the sample's .sln file.
The sample solution is displayed in Solution Explorer. You might get a security warning that says the solution location is not trusted. Click OK to continue.
To build and run TilePuzzle using Visual Studio
In Solution Explorer, right-click the Puzzle solution.
On the shortcut menu, click Build Solution.
On the Debug menu, click Start. Verify that the Puzzle project is set as the startup project.
After the project builds successfully, try to solve the puzzle yourself.
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 in the Sample
The following classes are used in this sample.
Implements the AboutForm object found in the Puzzle project.
Implements the GameLevelEnum object found in the Puzzle project.
Implements the SolveThreadProcDlg object found in the Puzzle project.