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

2024-09-01 16:28
文章标签 实战 项目 方块 俄罗斯

本文主要是介绍实战项目:俄罗斯方块(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 🍊自我介绍
  • 🍊vt100 控制码
    • 1.概述
    • 2.数字格式
      • ①常用数字控制码
      • ②常用控制码
  • 🍊绘制方格


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


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。


  我们此次的项目是由多文件编程实现的,下面图片是我们最终的实验情况:
在这里插入图片描述

🍊vt100 控制码

  我们观察上面的结果演示图,我们可以发现,方块拥有不同的颜色,它们是怎么实现的呢?接下来我们来介绍一下对于输出不同颜色的控制码——vt100控制码。

1.概述

  vt100是一个古老的终端定义,目前大部分的终端都兼容这种终端。vt100控制码是用来在终端扩展显示的代码。所有的控制字符全部以\033打头(即ESC的ASCII码)(\033中的0可以省略),用输出语句来输出,可以输出不同颜色的字符。在C语言程序中,一般用printf来输出vt100的控制字符。

2.数字格式

格式 \033[数字m

①常用数字控制码

\033[0m :关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m – \33[37m : 设置字体颜色
\033[40m – \33[47m :设置背景色
\033[字体背景色;字体颜色m 同时设置背景色和字体颜色

背景色范围:40~47

40 : 黑色
41 :深红色
42 : 绿色
43 : 黄色
44 :蓝色
45 :紫色
46 :深绿色
47 :白色

字体颜色范围:30~37

30 :黑色
31 :红色
32 :绿色
33 :黄色
34 :蓝色
35 :紫色
36 :深绿色
37 :白色

解释:输出黄色背景,红色字体的代码演示

#include <stdio.h>int main()
{//黄色背景,红色字体printf("\033[43;31m");printf("hello world!\n");printf("\033[0m");
//可以用一个printf输出,只不过看着不怎么美观://printf("\033[43;31mhello world!\n\033[0m");return 0;
}

演示结果:
在这里插入图片描述
控制字符格式

格式: \033[字母

②常用控制码

\033[nA:光标上移n行
\033[nB:光标下移n行
\033[nC:光标右移n行
\033[nD:光标左移n行
\033[y;xH:设置光标位置
\033[2J:清屏
\033[K:清楚从光标到行尾的内容
\033[s:保存光标位置
\033[u:恢复光标位置
\033[?25l(小写的L):隐藏光标
\033[?25h:显示光标

\033[y;xH:设置光标位置是以终端控制台的做顶点为原点,向右依次递增为X轴,向下依次递增为Y轴。

代码演示:

#include <stdio.h>
int main()
{printf("\033[2J");//清屏printf("\033[20;14H");//光标移动到(14,20)的位置printf("\033[43;31m");//显示黄色背景,红色字体printf("hello world!\n");printf("\033[?25l");//隐藏光标printf("\033[0m");//关闭所有属性return 0;
}

代码运行结果:
在这里插入图片描述

🍊绘制方格

  俄罗斯方块几乎每个下朋友的童年,应该都经历过。那么我们学习了编程之后,就可以通过编程来构思俄罗斯方块是如何实现的呢?俄罗斯方块的初始状态有下图的7种类型。然后再经过变化得到。
在这里插入图片描述
图形构成
  我们以4 * 4的方格为最大单位,方格中的1个点代表我们的小方块。若是使用到了该坐标点,其值为1,否则为0(以行为单位排列)
以"田"形方块为例:
在这里插入图片描述

1行   第2行    第3行   第4行 
坐标值 = {1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0}
图形距离右侧距离为2
图形距离下侧距离为2

代码类型的设计
图形可以通过三位数组类存储。

int shape[7][4][18];

7代表方块有7种基本的变化形状。
4代表有4个旋转方向(上、下、左、右)
18中的前16个数据代表16个数据点,第十七个代表距离右侧边界距离,第18个数据代表距离下侧边界的距离。

这篇关于实战项目:俄罗斯方块(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127449

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(