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

news2024/9/22 19:46:04

文章目录

  • 🍊自我介绍
  • 🍊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.coloradmin.cn/o/2094278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

猫头虎分享:关于 Mac OS 系统 .DS_Store 文件的起源、作用及管理全指南

&#x1f42f;猫头虎分享&#xff1a;关于 Mac OS 系统 .DS_Store 文件的起源、作用及管理全指南 &#x1f42f; 猫头虎 分享&#xff1a;关于 Mac OS系统 .DS_Store 文件的起源和作用 今天猫头虎带您深入探讨 Mac OS 系统中的 .DS_Store 文件。作为一名开发者&#xff0c;您…

科研绘图系列:R语言差异基因四分图(Quad plot)

介绍 四分图(Quad plot)是一种数据可视化技术,通常用于展示四个变量之间的关系。它由四个子图组成,每个子图都显示两个变量之间的关系。四分图的布局通常是2x2的网格,每个格子代表一个变量对的散点图。 在四分图中,通常: 第一个子图显示变量A和B的关系。第二个子图显示…

足浴城消费系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;商品分类管理&#xff0c;商品信息管理&#xff0c;购买信息管理&#xff0c;会员卡申请管理&#xff0c;包厢信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;公告…

苍穹外卖项目前端DAY01

前端DAY01 1、基于脚手架创建前端工程 使用Vue CLI创建前端工程&#xff1a; 方式一&#xff1a;vue create 项目名称方式二&#xff1a;vue ui&#xff08;比较慢&#xff09; 2、vue基本使用方法 Vue的组件文件以.vue结尾&#xff0c;每个组件由三个部分组成&#xff1a; …

AJAX day-02 HTTP格式JSON格式

目录 一. 计算机网络 1.1 网络参考模型 1.2 各层重要对应的协议 1.3 DNS解析&#xff08;域名解析服务器&#xff09; 1.4 FTP&#xff08;文件传输协议&#xff09; 1.5 UDP&#xff08;用户数据报协议&#xff09; 1.6 TCP(传输控制协议) 1.7 IP(网际互连协议) 1.8 …

[Leetcode 46][Medium]-全排列-回溯(全排列问题)

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 对于全排列问题&#xff0c;很明显要用回溯法。但是和组合问题不一样的是全排列问题是可以取先前遍历的元素的。因此需要另外新建一个状态数组来存储所有元素是否被访问过的状态。回溯时把状态…

QT Sql 实现多个股票成交明细数据文件制成数据库并支持查询

一.背景 上一篇我们学会了,如何用python自动化爬出交易软件的历史成交明细分笔数据,如果你没看到的话,这里有链接: AI 通过python脚本自动化导出交易软件某一天的分笔成交明细-CSDN博客,我们接着讲如何讲用QT分析这些数据并制成数据库文件来查询。 二.效果图 三.实现步骤 …

【Qt】关于QMenuBar创建方式的讨论

关于QMenuBar创建方式的讨论 如果在创建项目的时候&#xff0c;没有勾选自动生成ui文件&#xff0c;此时上述代码是正确的&#xff1b;而如果勾选了自动生成ui文件&#xff0c;上述代码则会出现内存泄漏的问题。因为Qt已经生成了一个QMenuBar了 由于之前程序已经自己创建好了一…

Mysql基础练习题 1083.销售分析2 (力扣)

编写一个解决方案&#xff0c;报告那些买了 S8 而没有买 iPhone 的 买家。注意&#xff0c;S8 和 iPhone 是 Product 表中显示的产品。 题目连接&#xff1a; https://leetcode.cn/problems/sales-analysis-ii/description/ 建表插入数据&#xff1a; Create table If Not …

CentOS 超详细保姆级安装教程(每步都有截图)

文章目录 下载安装VMware检查网络适配器Centos 下载创建虚拟机启动虚拟机配置静态IP 这里提一下, Centos 相关的操作系统, Linux社区已经不再维护了, 建议装 Ubuntu 下载安装VMware 点我跳转 | VMware WorkStation Pro DownLoad 官网下载速度慢的可以使用我百度网盘分享的链接…

简易爬虫平台设计与实现

本来没有架构&#xff0c;写的组件多了&#xff0c;就有了架构。 前言 早期&#xff0c;我为了抓取mp3和一些网站文章&#xff0c;随意写了些零零星星的代码。后来&#xff0c;使用了scrapy和webmagic等爬虫框架&#xff0c;算是走上了正轨。又后来&#xff0c;东一个组件&…

手撕Python之条件语句和循环语句

1.比较运算符 2.判断 单条件判断&#xff0c;我们就需要用到if 程序的正常执行流程是从上往下依次执行 我们可以使用流程控制语句中的if语句来根据不同的情况执行不同的代码 单个条件的判断使用if关键字 两个条件使用if…else 多个条件使用if…elif…else if关键字判断后…

Ho-Lee利率模型的实现

一&#xff1a;Ho-Lee利率模型的介绍 Ho-Lee模型是由Thomas Ho和Sang-bing Lee在1986年提出的&#xff0c;用于描述利率期限结构变动的模型。该模型基于无套利机会假设&#xff0c;认为当前的利率期限结构包含了人们对未来利率预测的所有信息&#xff0c;因此利率期限结构的变…

006.Python爬虫系列_Web前端基础HTML+CSS

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数…

中仕公考:公务员公示期一过就能入职了吗?

公务员政审结束后&#xff0c;拟录用人员名单将进行为期5-7天的公示。此环节是确保广泛收集公众意见&#xff0c;如果发现候选人存在问题&#xff0c;相关人士可以向负责部门举报。如果经过调查确认存在问题&#xff0c;该候选人可能无法顺利通过公示期。 公务员职位公示期结束…

Python和JAX及MATLAB小波分析导图

&#x1f3af;要点 离散小波变换和逆离散小波变换时间序列谱分析计算比例图和频谱图显示数据莫莱小波时频数据表征海表温度异常的区域平均值捕捉市场波动时间频率关联信息信号和图像分解压缩重建降维分析金融波动连续小波卷积网络和离散小波信号分类图像处理、提取地震图速度和…

随笔1:数学建模与数值计算

目录 1.1 矩阵运算 1.2 基本数学函数 1.3 数值求解 数学建模与数值计算 是将实际问题通过数学公式和模型进行描述&#xff0c;并通过计算获得模型解的过程。这是数学建模中最基本也是最重要的环节之一。下面是详细的知识点讲解及相应的MATLAB代码示例。 1.1 矩阵运算 知识点…

突破代码:克服编程学习中的挫折感

目录 一、心态调整&#xff1a;心理韧性的培养 接受挫折是学习的一部分 设置实际的学习目标 保持学习的乐趣 二、学习方法&#xff1a;策略的实施 逐步解决问题 寻找多样的学习资源 定期复习与实践 三、成功经验&#xff1a;实例的启示 Debug的技巧掌握 算法的深入理…

STM32的寄存器详解

目录 前言 一、 STM32 单片机寄存器概述 1.寄存器的作用 2.寄存器的分类 二、STM32 内核寄存器 1.程序计数器&#xff08;PC&#xff09; 2.堆栈指针&#xff08;SP&#xff09; 3.链接寄存器&#xff08;LR&#xff09; 4.控制寄存器&#xff08;CONTROL&#xff09;…

Java项目服务器CPU飙升问题排查

目录 一.前言 二.程序日志定位 三.Mysql事务定位 四.程序代码定位 五.微服务注册异常定位 六.异常进程定位 6.1.进程的线程信息分析 6.2.进程的堆内存分析 七.总结 八.JVM分析工具推荐 一.前言 系统出现反应慢,打不开,登录不上等问题。 二.程序日志定位 通过程序日…