一.显示方块
二.产生随机块
20行10列的二维数组数组元素初始化成0如果元素值为1,就画方块,否则不画
#define SIDE_LEN 30 #define G_ARR_ROW (RECT_LOWER_Y/SIDE_LEN) #define G_ARR_RANK (RECT_LOWER_X/SIDE_LEN) //全局变量 int g_arrBackGround[G_ARR_ROW][G_ARR_RANK] = {0};//产生背景数组 void OnPaint(HDC hDC) { //创建兼容性DC(内存DC)--纸的编号 HDC mDC = CreateCompatibleDC(hDC); //创建兼容性位图--纸本身 HBITMAP hBitmap = CreateCompatibleBitmap(hDC,WND_WIDTH,WND_HEIGHT); //将DC与位图关联 SelectObject(mDC, hBitmap); //画方块 PaintSquare(mDC); //从内存DC到窗口DC传递 BitBlt(hDC,0,0,RECT_LOWER_X,RECT_LOWER_Y,mDC,0,0,SRCCOPY); //释放位图 DeleteObject(hBitmap); //释放DC DeleteDC(mDC); } void PaintSquare(HDC mDC){ int i = 0; int j = 0; //画矩形框 Rectangle(mDC,RECT_UPPER_X,RECT_UPPER_Y,RECT_LOWER_X,RECT_LOWER_Y); g_arrBackGround[2][4] = 1;g_arrBackGround[3][3] = 1; g_arrBackGround[3][4] = 1;g_arrBackGround[3][5] = 1; //遍历二维数组 for(i=0;i<G_ARR_ROW;i++) { for(j=0;j<G_ARR_RANK;j++) { if(1==g_arrBackGround[i][j]) {Rectangle(mDC,j*SIDE_LEN,i*SIDE_LEN,j*SIDE_LEN+SIDE_LEN,i*SIDE_LEN+SIDE_LEN);} }
}}
2、产生随机块并显示
//全局变量
int g_arrSquare[2][4] = {0};//产生方块数组
七种情况
#include <time.h> int CreateRandomSquare(){ int nIndex = rand()%7;//7种组合 switch(nIndex) { case 0: g_arrSquare[0][0] = 1;g_arrSquare[0][1] = 1;g_arrSquare[0][2] = 0;g_arrSquare[0][3] = 0; g_arrSquare[1][0] = 0;g_arrSquare[1][1] = 1;g_arrSquare[1][2] = 1;g_arrSquare[1][3] = 0; break; case 1: …… break; case 2: …… break; case 3: …… break; case 4: …… break; case 5: …… break; case 6: ……break; default:break; } return nIndex;} void CopySquareToBack() { int i = 0; int j = 0; for(i=0;i<COMB_ROW;i++) { for(j=0;j<COMB_RANK;j++) { g_arrBackGround[i][j+3] = g_arrSquare[i][j];//起始出现位置在中间 } }
}
效果图: