1. Before the actual programming, draw the buttons and customized mouse pointer that will be needed in your game using your favorite image creation software such as Paint, GIMP, or PhotoShop. It does not matter how your customized mouse pointer looks like because it will not show up on your form, just make sure that you buttons and your customized pointer are of the same height and width.
2. Start Microsoft Visual C++. Click File>New>Project>Select Wizards>Dark GDK-Game>Type “Using Menu” in the name textbox no quotes.
3. Minimize the MSVC++ window then go to My Documents>Visual Studio 2008>Projects>Using Menu>Using Menu> Then paste the images that you have created in step 1.
4. Maximize Visual C++>View>Solution Explorer>Double-Click Main.cpp. The following should then come into view:
// Dark GDK - The Game Creators - www.thegamecreators.com // the wizard has created a very simple project that uses Dark GDK // it contains the basic code for a GDK application // whenever using Dark GDK you must ensure you include the header file #include "DarkGDK.h" // the main entry point for the application is this function void DarkGDK ( void ) { // turn on sync rate and set maximum rate to 60 fps dbSyncOn ( ); dbSyncRate ( 60 ); // our main loop while ( LoopGDK ( ) ) { // update the screen dbSync ( ); } // return back to windows return; }
5. Locate the line void DarkGDK ( void ) then type the following after the line dbSyncRate ( 60 );
//loads our images dbLoadImage("hibutton.jpg",1); dbLoadImage("exitbutton.jpg",2); dbLoadImage("customizedpointer.jpg",3); //displays our images dbSprite(1,400,420,1); dbSprite(2,500,420,2);
6.If you try to run this,only the "Say Hi" and "Exit" buttons are visible.That's because we haven't display our sprite pointer yet.To view it, locate the line while ( LoopGDK ( ) ) and type the following aster the open curly bracket:
//assigns the currentX and CurrentY position //of our mouse an X and Y coordinate of //our customized pointer //we need to place it inside the //while loop so that it is always //updated depending on the current mouse coordinate dbSprite(3,dbMouseX(),dbMouseY(),3); //hides the sprite that acts as our pointer dbHideSprite(3);
7. The next thing that we need to do is to enable our button to react to mouse click. To be able to do that locate the line dbHideSprite(3); and type the ff. below it:
//if our hidden sprite collided with the “Say Hi” button //and the mouse button is clicked then if (dbSpriteCollision(3,1)==1 && dbMouseClick()==1) { //do something…you can add your game sequence action codes here //but in this case we will be displaying a “Hi!” text dbSetTextFont("Garamond"); dbSetTextSize(70); dbText(0,0,"Hi!"); } //if our hidden sprite collided with the “Exit” button //and the mouse button is clicked then if (dbSpriteCollision(3,2)==1 && dbMouseClick()==1) { //quit the form return; }
8. Let us have a quick look of our codes once again:
// Dark GDK - The Game Creators - www.thegamecreators.com // the wizard has created a very simple project that uses Dark GDK // it contains the basic code for a GDK application // whenever using Dark GDK you must ensure you include the header file #include "DarkGDK.h" // the main entry point for the application is this function void DarkGDK ( void ) { // turn on sync rate and set maximum rate to 60 fps dbSyncOn ( ); dbSyncRate ( 60 ); //loads our images dbLoadImage("hibutton.jpg",1); dbLoadImage("exitbutton.jpg",2); dbLoadImage("customizedpointer.jpg",3); //displays our images dbSprite(1,400,420,1); dbSprite(2,500,420,2); // our main loop while ( LoopGDK ( ) ) { dbSprite(3,dbMouseX(),dbMouseY(),3); dbHideSprite(3); if (dbSpriteCollision(3,1)==1 && dbMouseClick()==1) { dbSetTextFont("Garamond"); dbSetTextSize(70); dbText(0,0,"Hi!"); } if (dbSpriteCollision(3,2)==1 && dbMouseClick()==1) { return; } // update the screen dbSync ( ); } // return back to windows return; }
9. Press F5 to test your game. Try clicking the “Say Hi” and "Exit" button.
10. And that would be all. One of the first menu system tutorial in Dark GDK. My buttons looks disgusting because I just rushed it, I didn’t have time to make one in Blender. Hope you learn something from it, till next time.