Click here to Skip to main content
13,455,683 members (51,682 online)
Click here to Skip to main content
Add your own
alternative version


18 bookmarked
Posted 25 Feb 2006


, 25 Feb 2006
Rate this:
Please Sign up or sign in to vote.
A simulation of the famous MineSweeper game by Microsoft.

Sample Image - XMineSweeper.jpg


The XMineSweeper is a simulation for the famous 'MineSweeper' game by Microsoft which is shipped with its Windows operating system.

It is a light game that can help you spend some minutes with fun, far from coding problems.


I know it sounds silly to make the MineSweeper which is already developed for best outputs by the software gurus at Microsoft, but it was first an assignment for joining a job in a firm (without mentioning its name, Sakhr).

But after development, it was really fun, and it made me learn some practical skills.


Using the resources bitmap files from the original MineSweeper (%windir%\System32\winmine.exe) for drawing with GDI, I tried to make it look like the original by drawing 3D-like lines (by drawing white line on one side, and a gray one on the other side to make it feels like the effect of light and shadow).

The CMineSweeper Class

Here comes the main class for the game which manages the sequence of the game (this is how we learn the Game Engine from game developers). The class responds to user clicks, checks for mines, and draws the output for the 'Device Context' passed to it.

void CMineSweeper::Draw(CDC *pDC);

The draw function is essential for rendering the game to the CDC object passed to it. This design avoids the problem of flicker, by calling this function in the <CODE lang=c++>WM_PAINT message, and also call it when we need to update the view for the user.

Handle both right and left mouse button down

Handling the middle mouse button down is straight (<CODE lang=c++>ON_WM_MBUTTONUP()), but to handle both right-left mouse buttons down, you have to add a small check for the other button using the API function <CODE lang=c++>GetKeyState() which is used by game developers when they can't wait for the message to be sent, rather they go checking for it by themselves.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Web Developer
Egypt Egypt
C# C++

You may also be interested in...

Comments and Discussions

Questioncan I use the GNU License Agreement [modified] Pin
zach callaway9-Nov-08 6:47
memberzach callaway9-Nov-08 6:47 
GeneralDebug Assertion Failed! Pin
sandeepkavade24-Oct-07 0:52
membersandeepkavade24-Oct-07 0:52 
Generalbrilliant plus an improvement Pin
dysfunctional@freesurf.fr24-Aug-07 2:57
memberdysfunctional@freesurf.fr24-Aug-07 2:57 
QuestionHow to look into resource file of exe? Pin
Muhammed Nasir5-Jun-07 20:33
memberMuhammed Nasir5-Jun-07 20:33 
AnswerRe: How to look into resource file of exe? Pin
Garth J Lancaster5-Jun-07 21:19
memberGarth J Lancaster5-Jun-07 21:19 
AnswerRe: How to look into resource file of exe? Pin
ahmadaa5-Jun-07 23:39
memberahmadaa5-Jun-07 23:39 
QuestionRe: How to look into resource file of exe? Pin
Muhammed Nasir6-Jun-07 19:55
memberMuhammed Nasir6-Jun-07 19:55 
GeneralTouch Screen Edition Pin
phm3713-Jan-07 7:40
memberphm3713-Jan-07 7:40 
AnswerRe: Touch Screen Edition Pin
ahmadaa15-Jan-07 9:10
memberahmadaa15-Jan-07 9:10 
Questionhow do i compile the source code Pin
lyhlyh10-Mar-06 21:03
memberlyhlyh10-Mar-06 21:03 
AnswerRe: how do i compile the source code Pin
ahmadaa11-Mar-06 6:14
memberahmadaa11-Mar-06 6:14 
GeneralRe: how do i compile the source code Pin
lyhlyh11-Mar-06 6:31
memberlyhlyh11-Mar-06 6:31 
GeneralRe: how do i compile the source code Pin
ahmadaa12-Mar-06 7:24
memberahmadaa12-Mar-06 7:24 
AnswerRe: how do i compile the source code Pin
Homero De la Garza25-Mar-06 10:42
memberHomero De la Garza25-Mar-06 10:42 
Generalsource code Pin
Roger6526-Feb-06 12:05
memberRoger6526-Feb-06 12:05 
GeneralRe: source code Pin
ahmadaa27-Feb-06 7:18
memberahmadaa27-Feb-06 7:18 
Generalabout sakhr Pin
Mohamad Al Husseiny25-Feb-06 13:43
memberMohamad Al Husseiny25-Feb-06 13:43 
GeneralRe: about sakhr Pin
ahmadaa26-Feb-06 7:23
memberahmadaa26-Feb-06 7:23 
GeneralRe: about sakhr Pin
Mohamad Al Husseiny26-Feb-06 14:23
memberMohamad Al Husseiny26-Feb-06 14:23 
GeneralBrilliant Pin
Ashraf_s25-Feb-06 10:47
memberAshraf_s25-Feb-06 10:47 
GeneralRe: Brilliant Pin
ahmadaa26-Feb-06 7:27
memberahmadaa26-Feb-06 7:27 
GeneralRe: Brilliant Pin
Ashraf_s28-Feb-06 0:21
memberAshraf_s28-Feb-06 0:21 
GeneralRe: Brilliant Pin
ahmadaa28-Feb-06 1:39
memberahmadaa28-Feb-06 1:39 
Generalgood job Pin
khalouda25-Feb-06 6:47
memberkhalouda25-Feb-06 6:47 
GeneralRe: good job Pin
ahmadaa25-Feb-06 9:17
memberahmadaa25-Feb-06 9:17 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03-2016 | 2.8.180321.1 | Last Updated 25 Feb 2006
Article Copyright 2006 by Ahmad_Hashem
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid