当前位置: 首页 > news >正文

实战项目:俄罗斯方块(二)

文章目录

  • 🍊自我介绍
  • 🍊俄罗斯方块数据存储
    • 三维数组的简单介绍
    • 俄罗斯方块数组的设计
      • 类型的设计
      • 初始值的方块库的设计
      • 输出指定位置的图形
      • 输出每种图形及其转换形式代码


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  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;
}

输出结果:

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鸿蒙OpenHarmony、HarmonyOS、HarmonyOS NEXT的区别
  • 直播行业的未来:南昌络喆科技有限公司的创新无人直播项目!
  • The Power of Scale for Parameter-Efficient Prompt Tuning
  • Hive锁表、hive查询表是否被锁、hive解锁表
  • 数据结构之 “单链表“
  • MAC环境导出项目的目录结构
  • 【iOS】折叠cell
  • PG逻辑解码
  • 常见的性能测试方法!
  • 计算机毕业设计推荐-基于python的公司员工考勤管理系统
  • 全网最详细docker详解,从概念到实战一篇解决
  • 【 html+css 绚丽Loading 】000030 灵文闪烁符
  • 汽车免拆诊断案例 | 马自达CX-3无音频输出
  • 一文读懂flask
  • VSCode连接SSH发生connection timeout
  • 收藏网友的 源程序下载网
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • codis proxy处理流程
  • Docker入门(二) - Dockerfile
  • ECS应用管理最佳实践
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript异步流程控制的前世今生
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Ruby 2.x 源代码分析:扩展 概述
  • SOFAMosn配置模型
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 那些被忽略的 JavaScript 数组方法细节
  • 浅谈web中前端模板引擎的使用
  • 什么软件可以提取视频中的音频制作成手机铃声
  • raise 与 raise ... from 的区别
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 通过调用文摘列表API获取文摘
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # 安徽锐锋科技IDMS系统简介
  • #Z2294. 打印树的直径
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)STL算法之遍历容器
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (原創) 未来三学期想要修的课 (日記)
  • (转)jQuery 基础
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net 按比例显示图片的缩略图
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • @AliasFor注解
  • @html.ActionLink的几种参数格式