基于MiniGUI的俄罗斯方块

 

效果图

基于MiniGUI的俄罗斯方块_第1张图片

绘图窗体和控制窗体为子控件

子控件的创建如下:

//控件

#define           ID_DRAWAREA           "drawarea"    //绘画区

#define           ID_CONTROLBAR       "controlbar"  //控制面板

 

static BOOL RegisterMyControl (char *CONTROLID)

{

    WNDCLASS MyClass;

 

    MyClass.spClassName = CONTROLID;

    MyClass.dwStyle     = WS_NONE;

    MyClass.dwExStyle   = WS_EX_NONE;

    MyClass.hCursor     = GetSystemCursor (IDC_ARROW);

    MyClass.iBkColor    = COLOR_lightwhite;

       if(strcmp(CONTROLID,ID_DRAWAREA)==0)

              MyClass.WinProc          = InitDrawAreaProc;

       else if(strcmp(CONTROLID,ID_CONTROLBAR)==0)

              MyClass.WinProc          = InitControlBarProc;

 

    return RegisterWindowClass (&MyClass);

}

 

在主窗体的MSG_CREATE创建

RegisterMyControl(ID_DRAWAREA);

                     hwndDrawarea=CreateWindow(ID_DRAWAREA,"",WS_VISIBLE|WS_CHILD,IDD_DRAWAREA,0,0,xFrameWidth-controlbarwidth,yFrameHeight,hWnd,0);

                     RegisterMyControl(ID_CONTROLBAR);

                     hwndControlbar=CreateWindow(ID_CONTROLBAR,"",WS_VISIBLE|WS_CHILD,IDD_CONTROLBAR,xFrameWidth-controlbarwidth,0,controlbarwidth,yFrameHeight,hWnd,0);

 

俄罗斯方块算法

1 建一个二维数组,每一格都用x,y定位,然后用01填充,0 表示没方块,1表示有方块。

2 组建不同方块的实体,也就是使二维数组所对应的方格为1

3 移动时只要将对应的方格1移动就行,对于移过的格用0填充 

你可能感兴趣的:(算法)