基于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定位,然后用01填充,0 表示没方块,1表示有方块。

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值