Color | Win |
Red-Green-Blue | +2000 |
Red-Red-Red | +1000 |
Green-Green-Green | +1000 |
Blue-Blue-Blue | +1000 |
Others | -1000 |
1.Prepare the images that will be needed in your game. You can use Ms-Paint, Photoshop or GIMP. The following images are required for this game:
2. After preparing the images, Start Visual C++>File>New>Projects>Wizards>Select Dark GDK-Game>Type “Color Machine” in the name textbox (no quotes).
3. Assuming that you have saved the project in the default directory, minimize Microsoft Visual C++ then go to My Documents>Visual Studio 2008>Projects>Color Machine>Color Machine>Then paste the images that you have made 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 #include "DarkGDK.h" then declare the following variables below it:
//handles the spriteid of the left box int intred; //handles the spriteid of the middle box int intgreen; //handles the spriteid of the right box int intblue; //handles our loop int intcounter; //determines if the spin button has been clicked int intclicked; //displays our status text char* chrmessage; //handles the balance int intbalance=100000;
6. Locate the line dbSynRate(60); then replace the 60 with 10 so that dark GDK will try to play 10 frames per second and our loop will not play funny , then type the following after it:
//sets the window title dbSetWindowTitle("Color Slot Machine"); //sets the window size dbSetWindowSize(400,400); //loads our images dbLoadImage("red.png",1); dbLoadImage("green.png",2); dbLoadImage("blue.png",3); dbLoadImage("backdrop.png",4); dbLoadImage("Spin.png",5); dbLoadImage("pointer.png",6); //displays our images dbSprite(4,0,0,4); //sets our backdrop alpha transparency //so that our text will be visible dbSetSpriteAlpha(4,150); dbSprite(5,240,380,5); dbSprite(1,130,100,1); dbSprite(2,260,100,2); dbSprite(3,390,100,3);
7. Locate the Line while ( LoopGDK ( ) ) then type the following after the open curly brace:
//sets text size to 30 points dbSetTextSize(30); //displays the balance //I still don’t know how to concanate text dbText(0,0,"Balance:"); dbText(150,0,dbStr(intbalance)); //displays our status text dbText(250,250,chrmessage); //pessimistic programming //assume that the button has not yet been clicked intclicked=0; //hides our customized mouse pointer //so that only the mouse pointer is visible dbHideSprite(6); //Enables dbRnd to generate an unpredictable //random number generation dbRandomize(dbTimer()); dbSetSprite(6,1,100); //enables our sprite to follow the mouse dbSprite(6,dbMouseX(),dbMouseY(),6); //if our hidden sprite collided with the mouse //and the button has been clicked if(dbSpriteHit(6,5)==1 && dbMouseClick()==1) { //assigns 1 to inclicked variable //resets the value of chrmessage intclicked=1; chrmessage=""; //generate a random color 10 times for(intcounter=1;intcounter<=10;intcounter++) { intred=1 + dbRnd(2); intblue=1 + dbRnd(2); intgreen=dbRnd(2)+1; dbSprite(1,130,100,intred); dbSprite(2,260,100,intgreen); dbSprite(3,390,100,intblue); dbSync(); } } //check if the button has been clicked //if it was clicked then if (intclicked==1) { //check for color matches if (intred==1 && intblue==1 && intgreen==1) { chrmessage="You win 1000!"; intbalance=intbalance+1000; } else if (intred==2 && intblue==2 && intgreen==2) { chrmessage="You win 1000!"; intbalance=intbalance+1000; } else if (intred==3 && intblue==3 && intgreen==3) { chrmessage="You win 1000!"; intbalance=intbalance+1000; } else if (intred==1 && intblue==2 && intgreen==3) { chrmessage="You win 2000!"; intbalance=intbalance+1000; } //if no color matches then else { chrmessage="You Lose!"; intbalance=intbalance-1000; } } //if the balance is less than or equal to zero if (intbalance<=0) { dbCLS(); dbSetTextSize(32); dbText(180,250,"Insufficient balance"); dbText(250,300,"GAME OVER"); dbSync(); dbWait(4000); return; }8. Let’s have a look of our code once again and this time, crappy comments ommitted.
// 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" int intred; int intblue; int intgreen; int intcounter; int intclicked; char* chrmessage; int intbalance=100000; // 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 ( 20 ); dbSetWindowTitle("Color Slot Machine"); dbSetWindowSize(400,400); dbSetGamma(500,255,500); dbLoadImage("red.png",1); dbLoadImage("green.png",2); dbLoadImage("blue.png",3); dbLoadImage("backdrop.png",4); dbLoadImage("Spin.png",5); dbLoadImage("pointer.png",6); dbSprite(4,0,0,4); dbSetSpriteAlpha(4,150); dbSprite(5,240,380,5); dbSprite(1,130,100,1); dbSprite(2,260,100,2); dbSprite(3,390,100,3); // our main loop while ( LoopGDK ( ) ) { dbSetTextSize(30); dbText(0,0,"Balance:"); dbText(150,0,dbStr(intbalance)); dbText(250,250,chrmessage); intclicked=0; dbHideSprite(6); dbRandomize(dbTimer()); dbSetSprite(6,1,100); dbSprite(6,dbMouseX(),dbMouseY(),6); if(dbSpriteHit(6,5)==1 && dbMouseClick()==1) { intclicked=1; chrmessage=""; for(intcounter=1;intcounter<=10;intcounter++) { intred=1 + dbRnd(2); intblue=1 + dbRnd(2); intgreen=dbRnd(2)+1; dbSprite(1,130,100,intred); dbSprite(2,260,100,intgreen); dbSprite(3,390,100,intblue); dbSync(); } } if (intclicked==1) { if (intred==1 && intblue==1 && intgreen==1) { chrmessage="You win 1000!"; intbalance=intbalance+1000; } else if (intred==2 && intblue==2 && intgreen==2) { chrmessage="You win 1000!"; intbalance=intbalance+1000; } else if (intred==3 && intblue==3 && intgreen==3) { chrmessage="You win 1000!"; intbalance=intbalance+1000; } else if (intred==1 && intblue==2 && intgreen==3) { chrmessage="You win 2000!"; intbalance=intbalance+1000; } else { chrmessage="You Lose!"; intbalance=intbalance-1000; } } if (intbalance<=0) { dbCLS(); dbSetTextSize(32); dbText(180,250,"Insufficient balance"); dbText(250,300,"GAME OVER"); dbSync(); dbWait(4000); return; } // update the screen dbSync ( ); } // return back to windows return; }9. Press F5 to test our game. Click the Spin button and see what happens.