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


