39 'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
40 'W',
'i',
'n',
'M',
'i',
'n',
'e',0};
47static const WCHAR difficultyW[] = {
'D',
'i',
'f',
'f',
'i',
'c',
'u',
'l',
't',
'y',0};
69 if( p_board->
mines > ( p_board->
cols - 1 ) * ( p_board->
rows - 1 ) )
70 p_board->
mines = ( p_board->
cols - 1 ) * ( p_board->
rows - 1 );
114 size =
sizeof(p_board->IsSoundEnabled);
116 p_board->IsSoundEnabled = (p_board->IsSoundEnabled >= 3 ?
TRUE :
FALSE);
118 p_board->IsSoundEnabled =
FALSE;
121 for(
i = 0;
i < 3;
i++ ) {
131 for(
i = 0;
i < 3;
i++ ) {
185 p_board->IsSoundEnabled = (p_board->IsSoundEnabled ? 3 : 0);
189 for(
i = 0;
i < 3;
i++ ) {
195 for(
i = 0;
i < 3;
i++ ) {
213 if ( difficulty ==
CUSTOM )
223 switch( difficulty ) {
290 for( col = 0; col <= p_board->
cols + 1; col++ )
292 p_board->box[col][
row].IsPressed =
FALSE;
293 p_board->box[col][
row].IsMine =
FALSE;
294 p_board->box[col][
row].FlagType =
NORMAL;
295 p_board->box[col][
row].NumMines = 0;
360 p_board->box[selected_col][selected_row].IsMine =
TRUE;
364 while( (
unsigned) i < p_board->mines ) {
368 if( !p_board->box[col][
row].IsMine ) {
370 p_board->box[col][
row].IsMine =
TRUE;
375 p_board->box[selected_col][selected_row].IsMine =
FALSE;
381 for( col = 1; col < p_board->
cols + 1; col++ )
383 for(
i = -1;
i <= 1;
i++ )
384 for(
j = -1;
j <= 1;
j++ ) {
385 if( p_board->box[col +
i][
row +
j].IsMine ) {
386 p_board->box[col][
row].NumMines++ ;
396 if( col == 0 || col > p_board->
cols ||
row == 0 ||
row > p_board->
rows )
400 if( p_board->box[col][
row].IsMine ) {
401 switch( p_board->box[col][
row].FlagType ) {
414 switch( p_board->box[col][
row].FlagType ) {
428 WINE_TRACE(
"Unknown FlagType during game over in DrawMine\n");
433 switch( p_board->box[col][
row].FlagType ) {
453 WINE_TRACE(
"Unknown FlagType while playing in DrawMine\n");
459 && !p_board->box[col][
row].IsMine )
476 for( col = 1; col <= p_board->
cols; col++ ) {
492 led[0] =
count / 100 ;
493 count -= led[0] * 100;
500 count -= led[1] * 10;
504 for(
i = 0;
i < 3;
i++ )
510 for(
i = 0;
i < 3;
i++ ) {
566static void PlaySoundEffect(
BOARD *p_board,
UINT id)
568 if (p_board->IsSoundEnabled)
576 if( p_board->box[col][
row].FlagType !=
COMPLETE ) {
577 switch( p_board->box[col][
row].FlagType ) {
582 PlaySoundEffect(p_board, IDW_QUESTION);
586 p_board->box[col][
row].FlagType =
NORMAL;
591 p_board->box[col][
row].FlagType =
NORMAL;
595 p_board->box[col][
row].FlagType =
FLAG;
598 PlaySoundEffect(p_board, IDW_FLAG);
627 for(
i = -1;
i <= 1;
i++ )
628 for(
j = -1;
j <= 1;
j++ ) {
656 for(
i = -1;
i <= 1;
i++ )
657 for(
j = -1;
j <= 1;
j++ ) {
658 p_board->box[col +
i][
row +
j].IsPressed =
TRUE;
662 for(
i = -1;
i <= 1;
i++ )
663 for(
j = -1;
j <= 1;
j++ ) {
664 if( !p_board->box[p_board->
press.
x +
i][p_board->
press.
y +
j].IsPressed )
668 for(
i = -1;
i <= 1;
i++ )
669 for(
j = -1;
j <= 1;
j++ ) {
670 p_board->box[col +
i][
row +
j].IsPressed =
FALSE;
688 p_board->box[col][
row].FlagType !=
FLAG &&
689 col > 0 && col < p_board->cols + 1 &&
690 row > 0 && row < p_board->rows + 1 ) {
693 if( p_board->box[col][
row].IsMine ) {
697 PlaySoundEffect(p_board, IDW_EXPLODE);
704 PlaySoundEffect(p_board, IDW_BOX);
708 if( p_board->box[col][
row].NumMines == 0 )
710 for(
i = -1;
i <= 1;
i++ )
711 for(
j = -1;
j <= 1;
j++ )
724 unsigned numFlags = 0;
727 if( p_board->box[col][
row].FlagType ==
COMPLETE ) {
728 for(
i = -1;
i <= 1;
i++ )
729 for(
j = -1;
j <= 1;
j++ ) {
730 if( p_board->box[col+
i][
row+
j].FlagType ==
FLAG )
734 if( numFlags == p_board->box[col][
row].NumMines ) {
735 for(
i = -1;
i <= 1;
i++ )
736 for(
j = -1;
j <= 1;
j++ ) {
737 if( p_board->box[col+
i][
row+
j].FlagType !=
FLAG )
775 if( p_board->box[col][
row].FlagType !=
FLAG
806 WINE_TRACE(
"Unknown message type received in TestMines\n");
865 PlaySoundEffect(p_board, IDW_WIN);
871 for( col = 1; col <= p_board->
cols; col++ ) {
872 if (p_board->box[col][
row].IsMine && p_board->box[col][
row].FlagType !=
FLAG)
873 p_board->box[col][
row].FlagType =
FLAG;
1027 board.IsSoundEnabled = !board.IsSoundEnabled;
1071 WINE_TRACE(
"Unknown WM_COMMAND command message received\n");
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPWSTR cmdline, int cmdshow)
INT_PTR CALLBACK CustomDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR CALLBACK CongratsDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT_PTR CALLBACK TimesDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static void SetDifficulty(BOARD *p_board, DIFFICULTY difficulty)
static void TestBoard(HWND hWnd, BOARD *p_board, int x, int y, int msg)
static const WCHAR minesW[]
static const WCHAR widthW[]
static const WCHAR nameW[]
static void MoveOnScreen(RECT *rect)
static void PressBox(BOARD *p_board, unsigned col, unsigned row)
static const WCHAR difficultyW[]
static void DrawMines(HDC hdc, HDC hMemDC, BOARD *p_board)
static void DrawLeds(HDC hdc, HDC hMemDC, BOARD *p_board, int number, int x, int y)
static void SaveBoard(BOARD *p_board)
static const WCHAR xposW[]
static void TestMines(BOARD *p_board, POINT pt, int msg)
static void TestFace(BOARD *p_board, POINT pt, int msg)
static const WCHAR yposW[]
static void DrawFace(HDC hdc, HDC hMemDC, BOARD *p_board)
static void DrawBoard(HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board)
static void CompleteBoxes(BOARD *p_board, unsigned col, unsigned row)
static void ShiftBetween(LONG *x, LONG *y, LONG a, LONG b)
static void PressBoxes(BOARD *p_board, unsigned col, unsigned row)
static void UnpressBox(BOARD *p_board, unsigned col, unsigned row)
static void LoadBoard(BOARD *p_board)
static const DWORD wnd_style
static const WCHAR heightW[]
static const WCHAR markW[]
static void InitBoard(BOARD *p_board)
static void PlaceMines(BOARD *p_board, int selected_col, int selected_row)
void CheckLevel(BOARD *p_board)
static LRESULT WINAPI MainProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static const WCHAR timeW[]
static void CreateBoard(BOARD *p_board)
static void DrawMine(HDC hdc, HDC hMemDC, BOARD *p_board, unsigned col, unsigned row, BOOL IsPressed)
static void CompleteBox(BOARD *p_board, unsigned col, unsigned row)
static void DestroyBoard(BOARD *p_board)
static void UnpressBoxes(BOARD *p_board, unsigned col, unsigned row)
static void AddFlag(BOARD *p_board, unsigned col, unsigned row)
#define MAX_PLAYER_NAME_SIZE
#define RegCloseKey(hKey)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
VOID WINAPI ExitProcess(IN UINT uExitCode)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble GLdouble top
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
void __cdecl srand(_In_ unsigned int _Seed)
_Check_return_ int __cdecl rand(void)
static unsigned int number
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
HMONITOR WINAPI MonitorFromRect(LPCRECT, DWORD)
#define REG_OPTION_NON_VOLATILE
#define WS_OVERLAPPEDWINDOW
BOOL WINAPI PlaySoundW(LPCWSTR pszSoundW, HMODULE hmod, DWORD fdwSound)
BOOL WINAPI ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon)
WCHAR best_name[3][MAX_PLAYER_NAME_SIZE+1]
TW_UINT32 TW_UINT16 TW_UINT16 MSG
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI DeleteDC(_In_ HDC)
#define HKEY_CURRENT_USER
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI ReleaseCapture(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI UpdateWindow(_In_ HWND)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
HDC WINAPI GetDC(_In_opt_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
#define MAKEINTRESOURCEW(i)
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
struct tagCREATESTRUCTW * LPCREATESTRUCTW
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HMENU WINAPI GetMenu(_In_ HWND)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)