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

文章目录

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

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


🍊自我介绍

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


我们此次的项目是由多文件编程实现的,下面图片是我们最终的实验情况:

🍊vt100 控制码

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

1.概述

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

2.数字格式

c 复制代码
格式 \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 :白色

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

c 复制代码
#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;
}

演示结果:

控制字符格式

c 复制代码
格式: \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轴。

代码演示:

c 复制代码
#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**(以行为单位排列)**

以"田"形方块为例:

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

代码类型的设计

图形可以通过三位数组类存储。

c 复制代码
int shape[7][4][18];

7代表方块有7种基本的变化形状。

4代表有4个旋转方向(上、下、左、右)

18中的前16个数据代表16个数据点,第十七个代表距离右侧边界距离,第18个数据代表距离下侧边界的距离。

相关推荐
未来之窗软件服务20 分钟前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
小冯记录编程35 分钟前
C++指针陷阱:高效背后的致命危险
开发语言·c++·visual studio
1uther1 小时前
Unity核心概念⑨:Screen
开发语言·游戏·unity·c#·游戏引擎
C_Liu_1 小时前
C++:类和对象(下)
开发语言·c++
coderxiaohan1 小时前
【C++】类和对象1
java·开发语言·c++
阿幸软件杂货间2 小时前
Office转PDF转换器v1.0.py
开发语言·pdf·c#
扯淡的闲人2 小时前
多语言编码Agent解决方案(5)-IntelliJ插件实现
开发语言·python
丑小鸭是白天鹅2 小时前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
sali-tec2 小时前
C# 基于halcon的视觉工作流-章34-环状测量
开发语言·图像处理·算法·计算机视觉·c#
java搬砖工-苤-初心不变2 小时前
基于 lua_shared_dict 的本地内存限流实现
开发语言·junit·lua