• els 显示一个随机方块


    1、函数实现(els.c)

    #include"els_h.h"
    //背景数组
    char g_arrBackGroud[20][10] = {0};
    char g_arrSqare[2][4] = {0};


    void OnPaint(HDC hDc)
    {
        //创建兼容性DC。
        HDC hMemDC = CreateCompatibleDC(hDc);//内存id为:HMemDc,窗口id hDc。

        //创建兼容性位图。
        HBITMAP hBitmapBack= CreateCompatibleBitmap(hDc, 500, 600);

        //关联起来。
        SelectObject(hMemDC, hBitmapBack);

        PaintSqare(hMemDC);
        
        //传递:
        //返回值:失败返回0,成功返回非零。
        //参数1:目标DC,窗口DC
        //参数2,3:目标的起始位置,注意是基于我们的窗口。
        //参数4,5:区域的大小。
        //参数6:源DC,也就是我们的内存DC。
        //参数7,8:内存图片的起始位置。
        //参数9:传递方式。
        //
        BitBlt(hDc, 0, 0, 300, 600, hMemDC, 0, 0, SRCCOPY);

        //释放DC
        DeleteObject(hBitmapBack);
        DeleteDC(hMemDC);
        
        
    }
    void Oncreate()
    {
        srand((unsigned int)time(NULL));//只执行一次。
        CreateRandomSqare();
        CopySqareToBack();

    }
    void PaintSqare(HDC hMemDC)
    {
        int i = 0,
            j = 0;

        //画大方块。
        Rectangle(hMemDC, 0, 0, 300, 600);//矩形框距离运行窗口的开始位置坐标和截至位置坐标。
        
        //指定一个方块。
        /*g_arrBackGroud[2][4] = 1;
        g_arrBackGroud[3][3] = 1;
        g_arrBackGroud[3][4] = 1;
        g_arrBackGroud[3][5] = 1;*/

        //遍历
        for (i=0 ; i < 20; i++)
        {
            for (j=0 ; j < 10; j++)
            {
                if (1 == g_arrBackGroud[i][j])
                {
                    //画方块。
                    Rectangle(hMemDC, j*30, i*30, j*30 + 30, i*30 + 30);//矩形框距离运行窗口的开始位置坐标和截至位置坐标。

                }
            }
        }

    }
    //创建随机块。
    int CreateRandomSqare()
    {
        int nIndex=rand()%7;
        switch (nIndex)
        {
          case 0:
            g_arrSqare[0][0] = 1, g_arrSqare[0][1] = 1, g_arrSqare[0][2] = 0, g_arrSqare[0][3] = 0;
            g_arrSqare[1][0] = 0, g_arrSqare[1][1] = 1, g_arrSqare[1][2] = 1, g_arrSqare[1][3] = 0; 
            
            break;
        case 1:
            g_arrSqare[0][0] = 0, g_arrSqare[0][1] = 1, g_arrSqare[0][2] = 1, g_arrSqare[0][3] = 0;
            g_arrSqare[1][0] = 1, g_arrSqare[1][1] = 1, g_arrSqare[1][2] = 0, g_arrSqare[1][3] = 0; 
            
            break;
        case 2:
            g_arrSqare[0][0] = 0, g_arrSqare[0][1] = 1, g_arrSqare[0][2] = 0, g_arrSqare[0][3] = 0;
            g_arrSqare[1][0] = 1, g_arrSqare[1][1] = 1, g_arrSqare[1][2] = 1, g_arrSqare[1][3] = 0; 
            
            break;
        case 3:
            g_arrSqare[0][0] = 1, g_arrSqare[0][1] = 0, g_arrSqare[0][2] = 0, g_arrSqare[0][3] = 0;
            g_arrSqare[1][0] = 1, g_arrSqare[1][1] = 1, g_arrSqare[1][2] = 1, g_arrSqare[1][3] = 0; 
            g_nList = 3;
            break;
        case 4:
            g_arrSqare[0][0] = 0, g_arrSqare[0][1] = 0, g_arrSqare[0][2] = 1, g_arrSqare[0][3]= 0;
            g_arrSqare[1][0] = 1, g_arrSqare[1][1] = 1, g_arrSqare[1][2] = 1, g_arrSqare[1][3] = 0;
            
            break;
        case 5:
            g_arrSqare[0][0] = 0, g_arrSqare[0][1] = 1, g_arrSqare[0][2] = 1, g_arrSqare[0][3] = 0;
            g_arrSqare[1][0] = 0, g_arrSqare[1][1] = 1, g_arrSqare[1][2] = 1, g_arrSqare[1][3] = 0;
            
            break;
        case 6:
            g_arrSqare[0][0] = 1, g_arrSqare[0][1] = 1, g_arrSqare[0][2] = 1, g_arrSqare[0][3] = 1;
            g_arrSqare[1][0] = 0, g_arrSqare[1][1] = 0, g_arrSqare[1][2] = 0, g_arrSqare[1][3] = 0;
            
            break;
        
        }
        return nIndex;
    }
    void  CopySqareToBack()
    {
        int i = 0,
            j = 0;
        for (i = 0; i < 2; i++)
        {
            for (j = 0; j < 4; j++)
            {
                g_arrBackGroud[i][j + 3] = g_arrSqare[i][j];
            }
        }

    }

    2、头函数(els.h)

    #ifndef N_d
    #define N_d

    #include
    #include
    void OnPaint(HDC hDc);
    //显示方块。
    void PaintSqare(HDC hMemDC);
    //产生随机块。
    int CreateRandomSqare();
    //随机块贴近背景。

    void  CopySqareToBack();
    void Oncreate();

    #endif

  • 相关阅读:
    Ubuntu20.04离线安装Vmware tools
    查找文本文件的差集
    企微侧边栏开发(内部应用内嵌H5)
    在Linux服务器上部署Spring项目
    倒计时9天|Zabbix中国峰会15位重磅嘉宾抢先看!
    Linux 文件 & 目录管理 & 链接
    【论文笔记】基于强化学习的连续型机械臂自适应跟踪控制
    jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)
    驱动开发之pinctrl 和 gpio 子系统
    《web课程设计》用HTML CSS做一个简洁、漂亮的个人博客网站
  • 原文地址:https://blog.csdn.net/qq_52119661/article/details/126014461