自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lucas的博客

远方很远,步履不停

  • 博客(36)
  • 收藏
  • 关注

原创 Linux软件编程笔记八——进程间通信Ⅰ

本文介绍了Linux系统中进程间通信的几种方式,主要包括管道和信号两种机制。管道分为无名管道和有名管道,前者用于具有亲缘关系的进程间通信,后者通过命名管道文件实现任意进程间通信。信号则用于应用层和内核层之间的异步事件通知,包括多种信号类型和三种处理方式(缺省、忽略、捕捉)。文章详细说明了pipe、mkfifo、signal、alarm等关键函数的使用方法,并给出了相应的代码示例,为理解Linux进程通信机制提供了实用参考。

2025-11-13 16:33:11 5953

原创 Linux软件编程笔记七——线程Ⅱ&线程间通信

本文主要介绍了Linux线程编程中的核心知识点。首先讲解了线程传参方法,通过pthread_create的第四个参数实现线程内部参数传递;接着详细阐述了线程属性的设置,包括加入属性和分离属性的区别;然后重点讨论了线程间通信的两种实现方式:使用全局变量配合互斥锁解决资源竞争,以及信号量机制控制资源访问。文中提供了完整的代码示例,展示了互斥锁和信号量的具体应用,并分析了死锁产生的条件及避免方法。这些内容为多线程程序开发提供了基础技术指导,涵盖了线程控制、同步与通信等关键概念。

2025-11-11 19:30:38 1016

原创 Linux软件编程笔记六——进程Ⅱ&线程Ⅰ

本文介绍了进程回收和线程管理的核心概念。在进程回收部分,详细讲解了wait和waitpid函数的用法和区别,wait会阻塞等待子进程结束,而waitpid可实现非阻塞回收或指定子进程回收。第二部分介绍了exec函数族,用于在进程空间执行新代码,以及system函数的用法。线程部分阐述了线程的基本概念、与进程的区别,对比了多进程和多线程的优缺点。线程函数接口包括pthread_create创建线程、pthread_self获取线程ID、pthread_exit结束线程等。文章通过代码示例展示了这些技术的具体应

2025-11-03 16:22:29 737

原创 Linux软件编程笔记五——进程Ⅰ

本文介绍了进程的基本概念、创建、调度、状态及消亡过程。主要内容包括:1)进程空间分布,如文本段、数据段和系统数据段的存储特点;2)虚拟地址与物理地址映射原理;3)多进程的独立存储与调度算法;4)常用进程管理命令(如top、ps、kill等);5)关键进程函数接口(fork、getpid、exit等);6)进程的三种状态及转换;7)孤儿进程和僵尸进程的产生与避免方法。通过进程空间、调度算法和状态转换的分析,阐述了操作系统管理进程的基本原理和方法。

2025-10-31 16:05:49 927

原创 Linux软件编程笔记四——文件IO&目录IO&时间函数

本文介绍了Linux系统下文件IO和目录IO的基本操作函数,主要内容包括: 文件IO读写函数:write()和read()的系统调用原型、功能及使用方法,并给出了一个文件复制示例程序。 文件描述符定位函数lseek()的使用方法。 目录IO相关操作: 目录操作基本流程(打开、读取、关闭) 核心函数介绍:opendir()、readdir()、closedir() 目录遍历的实现示例 路径处理函数(getcwd、chdir) 目录创建和删除函数(mkdir、rmdir) 时间处理相关函数: 时间类型分类(ti

2025-10-30 21:31:43 498

原创 Linux软件编程笔记三——标准IO(二进制)&文件IO

本文主要介绍了标准IO接口和文件IO操作的相关知识。在标准IO部分,详细讲解了fwrite和fread函数的使用方法,并给出了利用这两个函数实现图片拷贝的示例代码。同时介绍了流的定位相关函数(fseek、ftell、rewind)及其使用方法。在文件IO部分,对比了标准IO和文件IO的区别,阐述了系统调用与库函数的关系,重点讲解了open、close等文件IO函数接口的使用。最后提供了一个统计文件中出现最多字符的练习案例,展示了如何通过链表实现字符统计功能。全文涵盖了文件操作的核心知识点,包括标准IO函数、

2025-10-28 17:00:10 536

原创 Linux软件编程笔记二——标准IO(ASCII码)

本文摘要:文章介绍了Linux系统中的IO操作与文件概念,重点讲解了标准IO的相关内容。主要内容包括:1)文件分类(块设备、字符设备、目录、普通文件等);2)标准IO接口函数(fopen/fclose、fgetc/fputc等)及其使用示例;3)标准IO的三种缓存类型(全缓存、行缓存、不缓存)及其特点;4)Linux系统中三个特殊的标准流(stdin、stdout、stderr);5)man手册的使用方法。文章通过代码示例详细说明了标准IO函数的具体应用,并解释了文件操作的基本流程。

2025-10-27 13:27:26 953

原创 Linux软件编程笔记一——Shell

本文介绍了Linux系统基础知识和Shell脚本编程。主要内容包括: Linux系统概述:硬件、软件、操作系统概念,GNU/Linux组成及应用场景 Shell命令:文件操作、查找、通配符、管道、重定向、压缩解压等常用命令 Shell脚本编程:编程步骤、变量、分支结构(if/case)、循环结构(while/for)、数组和函数实现 提供了多个实用Shell脚本示例,如文件处理、成绩判断、求和计算等。文章适合Linux初学者快速掌握系统操作和脚本编写基础。

2025-10-20 20:28:44 1222

原创 嵌入式数据结构笔记九——排序&查找算法

本文介绍了五种经典排序算法:冒泡排序(稳定,O(n²))、选择排序(不稳定,O(n²))、插入排序(稳定,O(n²),有序时O(n))、希尔排序(不稳定,O(n^1.3)~O(n²))和快速排序(不稳定,平均O(nlogn)),并附有C语言实现代码。最后还介绍了O(logn)的折半查找算法。重点要求掌握这些排序算法的实现原理和代码编写。

2025-10-16 09:39:26 559

原创 嵌入式数据结构笔记八——哈希表

本文介绍了哈希表的原理与实现方法。哈希表通过哈希算法将数据映射到键值位置,实现O(1)时间复杂度的快速查找。文章详细讲解了哈希碰撞概念、哈希表构建方法(以0-100数据为例),并提供了C语言实现的插入、遍历、查找和销毁等核心操作代码。此外,还介绍了Makefile的基本语法规则和变量使用,强调其在工程管理中的重要性。重点要求掌握无头链表实现哈希表插入的方法,以及Makefile的基本应用技巧。

2025-09-25 20:08:03 680

原创 嵌入式数据结构笔记七——二叉树

本文系统介绍了树形结构的相关概念与操作。首先区分了线性结构和非线性结构,重点阐述了树形结构的节点分类、前驱后继、度、层数等基本概念。然后详细讲解了二叉树的类型(满二叉树、完全二叉树)及其遍历方式(前序、中序、后序的深度优先遍历和层序的广度优先遍历)。文章提供了C语言实现代码,包括完全二叉树的创建、四种遍历方式以及销毁操作,同时还介绍了非完全二叉树的创建方法和树高度的计算方法。通过图示和代码示例,全面展示了树形结构在计算机中的表示与处理方式。

2025-09-23 21:57:42 1120

原创 嵌入式数据结构笔记六——栈&队列

本文介绍了链表、栈和队列三种线性数据结构的概念与实现。重点分析了栈和队列的特性:栈是先进后出结构,支持在栈顶进行压栈和弹栈操作;队列是先进先出结构,在队尾入队、队头出队。文章详细讲解了顺序栈和链式栈的实现方法,包括创建、销毁、判空/满、压栈/弹栈等操作,并附有完整代码示例。同时介绍了循环队列的基本概念和类型定义,为后续实现循环队列操作奠定了基础。这些数据结构在计算机科学中具有广泛应用,理解它们的原理和实现对编程至关重要。

2025-09-18 21:56:09 1097

原创 嵌入式数据结构笔记五——循环链表&内核链表

本文介绍了循环链表和内核链表的基本概念与操作。循环链表在双向链表基础上增加了首尾相连的特性,通过修改循环条件实现遍历。文中详细讲解了循环链表的尾插法、遍历、查找、修改、删除和销毁等操作,并提供了相关代码实现。内核链表是Linux内核中的一种通用链表结构,其特点是将链表节点嵌入数据结构中,从而实现不同类型数据的存储。文章还简要介绍了内核链表的结构和使用方法,包括初始化、头插法、尾插法和有序插入等操作。这些链表结构为数据处理提供了灵活高效的解决方案。

2025-09-16 15:19:30 961

原创 嵌入式数据结构笔记四——双向链表&循环链表

双向链表与循环链表实现 本文介绍了双向链表和循环链表的数据结构实现方法。双向链表每个节点包含前驱(ppre)和后继(pnext)指针,支持头插法、尾插法、查找、删除等操作,其中删除和头插需要同时维护前后指针关系。循环链表在双向链表基础上,使首尾节点相互连接形成环形结构,头节点的ppre指向尾节点,尾节点的pnext指向头节点。 关键实现包括:节点定义、空链表创建、头插/尾插法、遍历查找、节点删除和链表销毁等操作。双向链表操作更灵活但实现稍复杂,循环链表通过环形结构简化了某些边界情况处理。两种链表各有特点,适

2025-09-15 19:10:32 1214

原创 嵌入式数据结构笔记三——单向链表Ⅲ

本文介绍了链表常见操作的实现方法,包括查找中间节点、查找倒数第k个节点、删除指定节点、链表倒置、排序(冒泡和选择排序)以及判断链表是否有环。通过快慢指针技巧高效解决查找问题,详细讲解了删除节点、倒置和排序的具体实现步骤,并推导了环检测的数学原理。这些操作展示了链表灵活运用指针实现高效内存管理和数据处理的优势。

2025-09-12 23:57:04 1506

原创 嵌入式数据结构笔记一——单向链表Ⅰ

摘要:本文系统介绍了数据结构的基本概念,重点解析了链表的特点与实现方式。数据结构作为程序设计的核心要素,其时间复杂度和空间复杂度是衡量算法效率的关键指标。文章详细对比了数组与链表的存储特性,指出链表通过离散存储实现高效插入删除操作的优势。针对单向链表,具体讲解了空链表创建和头插法的实现原理,并提供了C语言代码示例。最后介绍了Makefile工程管理工具的基本用法,为代码编译提供规范化管理方案。全文以链表为核心,从理论到实践,为数据结构学习提供了清晰的指导路径。

2025-09-11 18:32:06 1478

原创 嵌入式C语言项目——俄罗斯方块

一个基于C语言实现的俄罗斯方块游戏程序。程序分为三个文件:main.c(主逻辑)、els.c(游戏功能实现)和els.h(头文件)。主要功能包括:1) 使用信号处理实现方块自动下落;2) 支持多种方块形状及其变形;3) 提供移动(WASD)、旋转和暂停(P)操作;4) 实现消行检测和计分;5) 使用ANSI转义序列实现彩色终端显示。程序通过二维数组表示游戏区域,包含游戏状态管理、碰撞检测和用户交互等功能模块,完整实现了一个终端版的俄罗斯方块游戏。

2025-09-10 13:20:30 227

原创 嵌入式C语言笔记十八——位运算&内存管理&代码调试

本文主要介绍了C语言中的位运算符、内存管理和代码调试三大主题。位运算符部分详细讲解了按位与、或、异或及移位运算的用法和示例;内存管理部分阐述了堆区空间操作、内存泄漏问题及malloc/free函数的使用;代码调试部分则系统介绍了语法错误、逻辑错误、段错误的调试方法,包括gdb调试工具的使用技巧和core文件分析方法,以及valgrind工具检测内存泄漏的原理和方法。最后还对比了静态库和动态库的特点差异。全文通过具体代码示例展示了相关技术的实际应用。

2025-09-09 16:29:28 1057

原创 嵌入式C语言笔记十七——构造数据类型

文章详细介绍了C语言中结构体、共用体和枚举的使用方法。主要内容包括:1.结构体的定义、初始化、成员访问方式(.和->操作符)、内存对齐规则及传参方式(传值和传地址);2.共用体的定义及其在判断内存大小端中的应用;3.枚举类型的定义和使用特点。文中提供了多个示例代码,包括学生信息管理、日期计算和字符串处理等实用案例,并对比了结构体和共用体的区别。最后给出三个练习:计算日期在一年中的天数、单词顺序反转和学生信息管理系统。

2025-09-08 16:06:12 584

原创 嵌入式数据结构笔记二——单向链表Ⅱ

本文介绍了单向链表的基本操作及Linux环境配置方法。链表操作包括遍历、删除、查找、修改、尾插和销毁,详细说明了各操作的实现逻辑和代码示例。环境配置部分包含网络设置、APT工具集配置(使用阿里云源)、valgrind安装及VSCode的Linux版安装步骤,提供了从网络连通性测试到开发环境搭建的完整流程。全文通过代码片段和命令行操作指导,系统性地讲解了链表数据结构的实现和Linux开发环境的配置方法。

2025-05-14 21:54:41 559

原创 嵌入式C语言笔记十六——指针Ⅲ

本文介绍了C语言中二级指针、指针数组和数组指针的核心概念与应用。二级指针用于修改外部指针变量或传递指针数组;指针数组是元素为指针的数组,常用于字符串操作;数组指针则指向整个数组。通过代码示例演示了如何利用指针数组实现字符串排序,以及二维数组与指针的关系。文章还涉及void*指针的使用场景和练习题,包括二维数组边界元素求和和字符串查找的实现。这些内容是C语言指针高级应用的重要知识点。

2025-05-13 14:11:21 635

原创 嵌入式C语言笔记十五——指针Ⅱ

本文主要探讨了C语言中指针与数组的关系及应用。首先指出数组名是指向首元素的指针常量,但存在sizeof和&操作两种特殊情况。详细讲解了数组作为函数参数的三种传递方式,并以统计字符串各类字符数量的函数为例说明指针参数的使用。其次介绍了const指针的多种形式及其特性,包括对指针变量和指向内容的限制。然后区分了指针函数(返回指针的函数)和函数指针(指向函数的指针),并演示了函数指针在计算器程序中的应用。最后提供了字符串处理函数(如mystrlen、mystrcpy等)的实现代码,以及快速排序、选择排序等

2025-05-12 22:14:35 439

原创 嵌入式C语言笔记十四——指针Ⅰ

本文介绍了指针的核心概念和应用。指针本质是内存地址,具有直接访问内存、操作硬件等特点,能提升代码效率。文章详细解析了指针运算符(&取地址、*解引用)、指针变量的定义与分类(野指针、空指针),以及指针的算术运算规则(偏移由数据类型决定)。此外,还演示了指针的常见操作方式,如改变指针指向或修改指针指向空间的值。最后通过打印月历的编程练习,展示了指针在实际应用中的价值。全文系统性地讲解了指针的核心知识点及其编程实践。

2025-05-11 19:49:31 1591

原创 嵌入式C语言笔记十三——函数Ⅲ&预处理命令

本文介绍了C语言预处理命令和编程练习。预处理过程包括宏定义(带参/不带参)、头文件包含和条件编译,详细说明了gcc编译的五个步骤。编程练习部分包含:1)修改pow函数消除变量i;2)计算二维数组平均值;3)查找字符串数组最大值;4)字符串的选择排序和二分查找实现。这些内容涵盖了C语言预处理机制和基础算法实践,包括数组操作、字符串处理和搜索排序等核心编程技能。

2025-05-10 19:46:41 1971

原创 嵌入式C语言笔记十二——函数Ⅱ

本文主要介绍了变量作用域、生存周期和存储类型,以及代码运行时的内存分配机制。变量的作用域分为局部和全局,生存周期则有静态和动态之分。存储类型包括static、auto、register和extern,分别用于控制变量的存储位置和可见性。内存分配方面,程序运行时会在栈区、堆区、.bss段等不同区域分配空间。此外,文章还介绍了递归函数的实现方法,包括斐波那契数列的计算和汉诺塔问题,以及字符串转换函数atoi和itoa的实现原理。

2025-05-07 16:53:42 279

原创 嵌入式C语言笔记十一——函数Ⅰ

摘要:本文介绍了C语言中函数的概念与应用。主要内容包括:1.函数的基本概念,强调模块化编程的重要性;2.函数的定义、调用和声明规则,包含参数传递方式(值传递和指针传递)及返回值处理;3.通过四个典型示例(求最大值、打印闰年、筛选素数和计算最大公约数)演示函数的具体实现。文章重点说明了函数在降低程序耦合性、提高代码复用性方面的优势,并提供了详细的代码示例展示不同场景下的函数应用。

2025-05-07 10:08:59 516

原创 嵌入式C语言笔记十——二维数组

本文介绍了二维数组的相关知识:1)定义方式为"类型说明符 数组名[行][列]",如int a[3][4];2)初始化时行可省略但列必须指定;3)二维字符数组常用于存储字符串数组;4)列举了逆序、排序、查找等常见算法;5)通过魔方阵实例演示了二维数组应用,包括位置计算和边界处理;6)最后提出求主对角线最大值和辅对角线最小值的练习。文章全面介绍了二维数组的定义、初始化、应用及相关算法实现。

2025-05-05 23:48:58 507

原创 嵌入式C语言笔记九——一维字符数组

本文介绍了C语言中字符数组的基本概念和使用方法。字符数组用于存储字符串,定义时需注意预留'\0'结束符的空间。文章详细讲解了字符串处理函数,包括puts/gets输出输入函数、strlen计算字符串长度、strcpy字符串复制、strcat字符串拼接和strcmp字符串比较等。通过示例说明了这些函数的具体用法和注意事项,如防止数组越界等问题。最后提出了一个练习题目:实现将整型数据转换为字符串的功能,类似于itoa函数的作用。这些内容为C语言字符串处理提供了基础指导。

2025-04-27 18:57:13 503

原创 嵌入式C语言笔记八——一维整型数组

本文介绍了C语言中一维数组的基本概念和使用方法。主要内容包括:数组定义格式(类型说明符+数组名+[常量表达式]),数组名表示首元素地址的特性;数组元素的引用方式(数组名[下标]),强调不能整体引用和避免越界访问;数组初始化的三种方式(全部、局部和默认初始化);数组存储的三大特性(连续性、有序性和单一性)。此外还介绍了数组的输入输出操作、常用算法(逆序、选择排序、冒泡排序、插入排序和二分查找)以及循环右移等典型练习题的实现方法。

2025-04-24 15:48:41 579

原创 嵌入式C语言笔记六——循环结构

本文系统介绍了循环结构编程的核心要素,包括循环三要素(变量初始化、条件判断、变量更新)和四种循环语句(goto、while、do-while、for)。重点分析了不同循环的特点及适用场景:while适合未知次数的循环,do-while保证至少执行一次,for适合已知次数的循环。同时讲解了break(跳出循环)、continue(跳过本次)和return(结束函数)三个控制语句的用法。最后提供了7个典型编程练习,涵盖回文数判断、阶乘计算、质数判断等常见算法问题,帮助巩固循环结构的使用技巧。

2025-04-24 12:17:51 520

原创 嵌入式C语言笔记七——练习

本摘要汇总了15个C语言程序片段的执行结果与分析。主要涉及变量赋值、逻辑运算、条件判断、循环结构、字符处理等基础语法,展示了运算符优先级、自增自减、类型转换等关键概念。典型结果包括:逻辑运算导致a=2/b=1(例1)、后置++在条件判断中的影响(例2)、循环位移字符处理(例4)、嵌套循环的变量变化(例14)等。其中多个题目考察了++/--运算符在不同位置的运算顺序对结果的影响,以及for循环中变量变化的规律。部分题目(如例8)结果具有不确定性,体现了未初始化变量的风险。

2025-04-23 20:52:48 424

原创 嵌入式C语言笔记五——分支结构

本文摘要: 文章介绍了C语言中的逻辑表达式和分支结构。逻辑表达式部分重点讲解了关系运算符、逻辑运算符的截断特性(如&&和||的短路计算)以及三目运算符的结合方向。分支结构部分详细说明了if分支的使用注意事项(如花括号使用、等值比较写法等)和switch分支的语法规则(要求整型表达式、case后必须是常量等),并给出了双层switch的执行特点。最后提供了三个编程练习:字符处理、日期计算和一元二次方程求解。全文以代码示例和语法规则为主,适合C语言初学者学习基础语法结构。

2025-04-21 20:20:40 450

原创 嵌入式C语言笔记四——输入输出函数

C语言输入输出函数摘要:本文介绍了C语言输入输出函数的使用要点。1.字符输入输出需注意缓冲区问题,可用getchar()清除;2.printf格式化输出支持域宽(%nd)、精度(%.mf)、对齐(%-)等控制;3.scanf使用时需注意:非输入控制符需原样输入,变量前需加&,%c读取字符,%_c跳过空格;4.字符串处理使用gets/puts函数;5.通过编程练习巩固知识点,包括数字重组、类型转换、格式化输入输出等常见问题。重点提示:scanf格式字符串不应包含精度,八进制数010等于十进制8。

2025-04-21 19:10:08 1777

原创 嵌入式C语言笔记三——运算符与表达式

本文主要介绍了程序设计中表达式和运算符的相关知识。表达式是由运算符连接变量或常量组成的式子,具有值和类型。重点讲解了算术运算符、赋值运算符、逗号运算符和sizeof运算符的使用规则及注意事项,包括混合运算时的数据类型转换原则。同时阐述了运算符的优先级规则:括号>单目>双目>三目>赋值>逗号,算术运算符优先级高于关系运算符等。最后提供了一个计算数字各位平方和的编程练习。

2025-04-18 13:31:50 585

原创 嵌入式C语言笔记二——数据类型与常量变量

C语言编程基础摘要 本文介绍了C语言编程的必备基础知识,包括程序运行机制、数据存储单位和进制转换。重点讲解了数据类型,涵盖整数、浮点数、字符、void和bool类型的存储方式及取值范围。详细说明了常量和变量的定义与使用,特别介绍了字符与字符串常量的区别。最后提供了一个练习示例:将"China"加密为"Glmre",通过字母替换演示变量操作。文章内容涵盖C语言基础语法、数据类型和简单应用,适合初学者建立编程基础概念。

2025-04-16 18:14:58 455

原创 嵌入式C语言笔记一——Linux基础

本文介绍了Linux系统基础操作和C语言开发入门知识。主要内容包括:1) Linux基础操作如快照恢复、终端使用、文件管理命令(ls/pwd/cd/mkdir等);2) Vim编辑器常用操作(打开/编辑/保存文件、多窗口操作等);3) GCC编译流程和调试方法;4) 文件操作练习和C语言编程练习(打印菱形图案)。文章提供了实用的Linux命令和快捷键,适合初学者快速掌握Linux环境下的基本操作和C语言开发流程。

2025-04-15 18:30:13 543

嵌入式C语言项目-俄罗斯方块

1.核心逻辑: 游戏框架:游戏在一个固定的二维数组(frame)中运行,该数组表示游戏区域,包括边界和已经落下的方块。 方块表示:每个俄罗斯方块用一个结构体(struct els)表示,包括编号、变形后的编号以及一个8x4的字符数组(用'#'表示方块存在,空格表示不存在)。 方块生成:通过create_box函数根据随机数生成不同形状的方块,并设置其变形后的编号(用于旋转)。 方块移动:通过movebox函数将方块绘制到游戏框架的指定位置,can_movebox函数检测方块是否可以移动到目标位置,clear_movebox函数清除方块的当前绘制。 游戏循环:使用alarm信号每隔1秒触发一次下落(handler函数),同时通过循环读取用户输入(wasd控制移动和旋转,p暂停/继续)。 消行判断:在方块落到底部后,调用check_line函数检查是否有行可以被消除,消除后上面的行下移,并增加分数。 游戏状态:包括运行中和暂停两种状态,暂停时停止定时器,运行中时定时器触发下落。 2.代码实现过程: 初始化:在main函数中,初始化终端属性,设置游戏状态,初始化游戏框架(init_frame),生成当前方块和下一个方块,并显示游戏界面(show_frame)。 显示游戏界面:show_frame函数使用ANSI转义序列清屏并定位光标,绘制游戏边框、方块和文字提示。 方块操作:左右移动,旋转(w键,下移(s键)。 自动下落:通过信号处理函数handler实现,每次信号触发时清除当前方块,判断是否可以下落一行,不能则固定当前方块并生成新的方块。如果新方块无法放置,则游戏结束。 消行处理:固定方块后,调用check_line检查当前方块所占的行是否可以被消除(一行中没有空格),消除后调用clear_line将上面的行下移,并增加分数。

2025-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除