#define BLOCK_COUNT 5 #define BLOCK_WIDTH 5 #define BLOCK_HEIGHT 5 #define UNIT_SIZE 20 //小砖块的宽度和高度 int color[BLOCK_COUNT] = { GREEN,CYAN,MAGENTA,BROWN,YELLOW }; int NextIndex = -1; int block[BLOCK_COUNT * 4][BLOCK_HEIGHT][BLOCK_WIDTH] = { // | 形方块 { 0,0,0,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0 }, // L 形方块 { 0,0,0,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,0,1,1,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,0,0,0, 0,1,1,1,0, 0,1,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,1,1,0,0, 0,0,1,0,0, 0,0,1,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,0,1,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0 }, // 田 形方块 { 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,1,1,0,0, 0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0 }, // T 形方块 { 0,0,0,0,0, 0,1,1,1,0, 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,0,1,0, 0,0,1,1,0, 0,0,0,1,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,1,0,0, 0,1,1,1,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,1,0,0,0, 0,1,1,0,0, 0,1,0,0,0, 0,0,0,0,0 }, // Z 形方块 { 0,0,0,0,0, 0,1,1,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,1,0,0, 0,1,1,0,0, 0,1,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,1,1,0,0, 0,0,1,1,0, 0,0,0,0,0, 0,0,0,0,0 }, { 0,0,0,0,0, 0,0,1,0,0, 0,1,1,0,0, 0,1,0,0,0, 0,0,0,0,0 }, }; void clearBlock(int x, int y) { setcolor(BLACK); setfont(23, 0, "楷体"); for (int i = 0; i<BLOCK_HEIGHT; i++) for (int j = 0; j<BLOCK_WIDTH; j++) outtextxy(x + UNIT_SIZE*j, y + UNIT_SIZE*i, "■"); } void drawBlock(int x, int y, int next) { setfont(23, 0, "楷体"); setcolor(color[NextIndex]); for (int i = 0; i<5; i++) for (int j = 0; j<5; j++) if (block[4 * NextIndex][i][j] == 1) outtextxy(x + 20 * j, y + 20 * i, "■"); } void nextblock() { int x = 391, y = 71; //在右侧的提示区清除原来的方块 clearBlock(x, y); // 在右侧的提示区绘制新方块 // 1. 产生新的方块 srand(time(NULL)); NextIndex = rand() % BLOCK_COUNT; // 2. 绘制 drawBlock(x, y, NextIndex); } int main() { welcome(); initGameScene(); nextblock(); system("pause"); closegraph(); return 0; } |