实战项目:俄罗斯方块(二)
文章目录
- 🍊自我介绍
- 🍊俄罗斯方块数据存储
- 三维数组的简单介绍
- 俄罗斯方块数组的设计
- 类型的设计
- 初始值的方块库的设计
- 输出指定位置的图形
- 输出每种图形及其转换形式代码
你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式中有关C语言的项目实战:俄罗斯方块的内容存储相关知识。
🍊俄罗斯方块数据存储
三维数组的简单介绍
承接上篇文章,我们知道最后存储方块是用了三维数组进行存储的,接下来给大家简单的介绍一下三维数组的表示形式:
我们从上面的图片中可以看出来三维数组是由多个二维数组组成的,接下来给大家看一个更为直观的表示形式:
简单介绍,上图中a[0][3][4] 中的0代表第一个二维数组,3和4代表三行四列。
俄罗斯方块数组的设计
类型的设计
int shape[7][4][18];//7----7种图形
//4----每种图形有4种变换
//18----前16代表二维数组的数据点,第十七个数据代表距离右侧的距离,第18个数据代表距离下侧的距离。
初始值的方块库的设计
int shape[7][4][18] =
{{{1,1,0,0, 1,1,0,0, 0,0,0,0, 0,0,0,0, 2,2},// [][]{1,1,0,0, 1,1,0,0, 0,0,0,0, 0,0,0,0, 2,2},// [][]{1,1,0,0, 1,1,0,0, 0,0,0,0, 0,0,0,0, 2,2},//{1,1,0,0, 1,1,0,0, 0,0,0,0, 0,0,0,0, 2,2},//},{{1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0, 3,0},// [] [][][][]{1,1,1,1, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0.3},// []{1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0, 3,0},// []{1,1,1,1, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0.3},// []},{{0,1,0,0, 1,1,1,0, 0,0,0,0, 0,0,0,0, 1,2},// [] [] [][][] []{1,0,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0, 2,1},// [][][] [][] [] [][]{1,1,1,0, 0,1,0,0, 0,0,0,0, 0,0,0,0, 1,2},// [] []{0,1,0,0, 1,1,0,0, 0,1,0,0, 0,0,0,0, 2,1},// },{{1,1,0,0, 0,1,1,0, 0,0,0,0, 0,0,0,0, 1,2},// [][] []{0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0, 2,1},// [][] [][]{1,1,0,0, 0,1,1,0, 0,0,0,0, 0,0,0,0, 1,2},// []{0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0, 2,1},// },{{0,1,1,0, 1,1,0,0, 0,0,0,0, 0,0,0,0, 1,2},// [][] []{1,0,0,0, 1,1,0,0, 0,1,0,0, 0,0,0,0, 2,1},// [][] [][]{0,1,1,0, 1,1,0,0, 0,0,0,0, 0,0,0,0, 1,2},// []{1,0,0,0, 1,1,0,0, 0,1,0,0, 0,0,0,0, 2,1},// },{{0,0,1,0, 1,1,1,0, 0,0,0,0, 0,0,0,0, 1,2},// [] [] [][][] [][]{1,0,0,0, 1,0,0,0, 1,1,0,0, 0,0,0,0, 2,1},// [][][] [] [] []{1,1,1,0, 1,0,0,0, 0,0,0,0, 0,0,0,0, 1,2},// [][] []{1,1,0,0, 0,1,0,0, 0,1,0,0, 0,0,0,0, 2,1},// },{{1,0,0,0, 1,1,1,0, 0,0,0,0, 0,0,0,0, 1,2},// [] [][] [][][] []{1,1,0,0, 1,0,0,0, 1,0,0,0, 0,0,0,0, 2,1},// [][][] [] [] []{1,1,1,0, 0,0,1,0, 0,0,0,0, 0,0,0,0, 1,2},// [] [][]{0,1,0,0, 0,1,0,0, 1,1,0,0, 0,0,0,0, 2,1},// },
}
输出指定位置的图形
void print_mode_shape(int n,int m,int x,int y,int c)
{int i = 0;int xx = x;int yy =y;for(i = 0;i < 16;i++)//横坐标的变化{shape[n][m][i];if(shape[n][m][i] == 1){printf("\033[%d;%dH",yy,xx);//指定坐标输出printf("\033[%dm[]",c);//输出颜色printf("\033[0m");//关闭属性}xx += 2; //这里之所以加2 是因为我们是用[]表示方格,一个 [ 代表一列if(i != 0 && i% 4 ==0) {yy += 1;//我们用4 * 4 的空间来打印方格,当一行中四个方格打印完成之后,换行,横坐标重新变为初识横坐标xx = x;}}
}
变量解释
n:7种图案中选择某个图案
m:4种方向中选择某个方向
x,y:坐标
c:颜色
xx += 2 解释
输出每种图形及其转换形式代码
#include <stdio.h>int main()
{printf("\033[2J");int x = 6;int y = 6;int k = 0;//k表示七种图案int i = 0;//i表示转换方式,for(k = 0;k < 7;k++){for(i = 0;i < 4;i++){print_mode_shape(k,i,x,y,43);x = x + 12;}x = 6;y = y + 4;getchar();//表示停顿}printf("\033[?25h");//消除光标return 0;
}
输出结果: