Ich wollte als übung das Prog Minesweeper schreiben.
So weit bin ich gekommen:
Code: Alles auswählen
#include <windows.h>
#include <time.h>
HWND hWnd;
HWND Feld[16][16];
HWND Button[16][16];
HWND Text;
HWND Text2;
int Minen[16][16];
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpcmdline, int ncmdshow)
{
WNDCLASSEX windowclass;
MSG message;
const char szClassName[] = "MS";
windowclass.cbSize = sizeof (WNDCLASSEX);
windowclass.style = CS_HREDRAW | CS_VREDRAW;
windowclass.lpfnWndProc = WindowProc;
windowclass.cbClsExtra = 0;
windowclass.cbWndExtra = 0;
windowclass.hInstance = hInst;
windowclass.hIcon =LoadIcon (NULL, IDI_APPLICATION);
windowclass.hIconSm =LoadIcon (NULL, IDI_APPLICATION);
windowclass.hCursor =LoadCursor (NULL, IDC_ARROW);
windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1;
windowclass.lpszMenuName = NULL;
windowclass.lpszClassName = szClassName;
if(!RegisterClassEx (&windowclass))
return (0);
hWnd = CreateWindowEx(NULL,
szClassName,
"MS",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100,
310, 310,
NULL,
NULL,
hInst,
NULL);
for(int runde; runde>15; runde++)
{
int X, Y;
belegt:
srand(time(0));
X = 1+(rand() % (10-1));
srand(time(0));
Y = 1+(rand() % (10-1));
if(Minen[X][Y]==0)
{
Minen[X][Y]=9;
if(Minen[X+1][Y-1]!=9) Minen[X+1][Y-1]= Minen[X-1][Y-1]+1;
if(Minen[X+1][Y]!=9) Minen[X+1][Y]= Minen[X+1][Y]+1;
if(Minen[X+1][Y+1]!=9) Minen[X+1][Y+1]= Minen[X+1][Y+1]+1;
if(Minen[X][Y-1]!=9) Minen[X][Y+1]= Minen[X][Y+1]+1;
if(Minen[X][Y-1]!=0) Minen[X][Y-1]= Minen[X][Y-1]+1;
if(Minen[X-1][Y+1]!=0) Minen[X-1][Y+1]= Minen[X-1][Y+1]+1;
if(Minen[X-1][Y]!=0) Minen[X-1][Y]= Minen[X-1][Y]+1;
if(Minen[X-1][Y-1]!=0) Minen[X-1][Y-1]= Minen[X-1][Y-1]+1;
}
else goto belegt;
}
int ID = 1000;
int xk, yk;
for(int x; x<16; x++)
{
for(int y; y<16; y++)
{
xk=((x-1)*19);
yk=((y-1)*19);
if(Minen[x][y]==0)
{
Feld[x][y] = CreateWindow("STATIC",
" ",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==1)
{
Feld[x][y] = CreateWindow("STATIC",
"1",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==2)
{
Feld[x][y] = CreateWindow("STATIC",
"2",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==3)
{
Feld[x][y] = CreateWindow("STATIC",
"3",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==4)
{
Feld[x][y] = CreateWindow("STATIC",
"4",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==5)
{
Feld[x][y] = CreateWindow("STATIC",
"5",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==6)
{
Feld[x][y] = CreateWindow("STATIC",
"6",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==7)
{
Feld[x][y] = CreateWindow("STATIC",
"7",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==8)
{
Feld[x][y] = CreateWindow("STATIC",
"8",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
else if(Minen[x][y]==9)
{
Feld[x][y] = CreateWindow("STATIC",
"M",
WS_BORDER | WS_VISIBLE | WS_CHILD | ES_CENTER,
xk,yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
}
ID++;
}
ID++;
}
for(int x; x<16; x++)
{
for(int y; y<16; y++)
{
xk=((x-1)*19);
yk=((y-1)*19);
Button[x][y] = CreateWindow("Button",
"",
BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD,
xk, yk,
20, 20,
hWnd,
(HMENU) ID,
hInst,
NULL);
ID++;
}
ID++;
}
if(hWnd == NULL)
return (0);
while (GetMessage (&message, NULL, 0, 0))
{
TranslateMessage (&message);
DispatchMessage (&message);
}
return (int)(message.wParam);
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
{
PostQuitMessage(0);
return (0);
}
case WM_KEYDOWN:
{
switch(wParam)
{
case VK_ESCAPE:
{
PostQuitMessage (0);
return (0);
}
}
}
break;
case WM_COMMAND:
{
switch(wParam)
{
}
return (0);
}
}
return (DefWindowProc (hWnd, message, wParam, lParam));
}
kann mir jemand helfen??
mfg
Empire