基于MiniGUI的俄罗斯方块
Posted skdev
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于MiniGUI的俄罗斯方块相关的知识,希望对你有一定的参考价值。
绘图窗体和控制窗体为子控件
子控件的创建如下:
//控件
#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定位,然后用0、1填充,0 表示没方块,1表示有方块。
2 组建不同方块的实体,也就是使二维数组所对应的方格为1
3 移动时只要将对应的方格1移动就行,对于移过的格用0填充
以上是关于基于MiniGUI的俄罗斯方块的主要内容,如果未能解决你的问题,请参考以下文章