方块处理(1) ---十天教会你俄罗斯方块

一.显示方块

二.产生随机块

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];//起始出现位置在中间 }  }

}

效果图:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区

领取腾讯云代金券