- 博客(50)
- 收藏
- 关注

原创 C语言游戏实战(12):植物大战僵尸(坤版)
本游戏使用C语言和easyx图形库编写,通过这个项目我们可以深度的掌握C语言的各种语言特性和高级开发技巧,以及锻炼我们独立的项目开发能力,在开始编写代码之前,我们需要先了解一下游戏的基本规则和功能:游戏界面:游戏界面是一个矩形区域,玩家可以在区域内进行植物的放置和铲除等操作。不同的植物有不同的功能,在这里我们可以僵尸植物分为三大类:1. 生产型植物(如太阳花):这种植物的特点是在一定的时间生产出太阳,以增加太阳的产量。
2024-06-10 19:07:24
129222
188

原创 c语言游戏实战(10):坤坤的篮球回避秀
这款简易版的球球大作战是博主耗时两天半完成的,玩家需要控制坤坤在游戏界面上移动,来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写,旨在帮助初学者了解游戏开发的基本概念和技巧。在开始编写代码之前,我们需要先了解一下游戏的基本规则和功能:游戏界面:游戏界面是一个矩形区域,玩家可以在这个区域内控制球的移动。坤坤:玩家控制的坤坤可以在游戏界面内自由移动,按下特定的按键后可以跳跃。篮球:篮球在游戏界面的正上方源源不断地生成,并下降。
2024-06-04 20:09:21
29932
63

原创 C语言游戏实战(4):人生重开模拟器
人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。
2024-06-04 20:09:06
29437
31

原创 C语言游戏实战(9):球球大作战
这款简易版的球球大作战是一款单人游戏,玩家需要控制一个小球在地图上移动,吞噬其他小球来增大自己的体积。本游戏使用C语言和easyx图形库编写,旨在帮助初学者了解的基本概念和技巧。在开始编写代码之前,我们需要先了解一下游戏的基本规则和功能:游戏界面:游戏界面是一个矩形区域,玩家可以在这个区域内控制球的移动。玩家小球:玩家控制的小球可以在游戏界面内自由移动,按下空格键可以加速。其他小球:其他小球又分为食物小球,和ai控制的小球。
2024-06-03 21:27:17
129047
133
原创 【Linux】Linux基础指令2
本文介绍了Linux系统中常用的文件操作指令及时间日历命令,包括:文件操作指令:cp(复制)、mv(移动/重命名)、cat(查看内容)、more/less(分页查看)、head/tail(查看开头/结尾内容),详细说明各命令的语法、功能及常用选项;管道操作符(|)的使用方法;时间相关命令:date(显示/设置时间,时间戳转换)、cal(日历显示);find命令的文件查找功能。文章通过对比more和less的差异,并提供了各命令的典型用法示例,帮助用户掌握Linux基础文件管理和时间操作技能。
2025-06-06 01:25:31
825
原创 【Linux】Linux基础指令1
摘要:本文介绍了Linux常用文件操作命令及其语法和功能。1.ls命令:列出目录内容,常用选项包括-a显示隐藏文件、-l显示详细信息、-R递归显示等。2.pwd命令:显示当前工作目录。3.cd命令:切换目录,支持绝对/相对路径和特殊符号如..和~。4.touch命令:创建文件或修改文件时间属性。5.mkdir/rmdir命令:创建/删除目录,其中rmdir只能删除空目录。6.rm命令:删除文件或目录,支持-r递归删除。7.alias命令:为命令创建别名。8.man命令:查看命令帮助手册,分为9个章节。这些命
2025-06-05 18:13:20
672
原创 【C++】vector的模拟实现
这篇文章详细介绍了如何模拟实现C++中的vector容器。主要内容包括:1. 基本结构设计,使用三个指针管理内存;2. 关键功能实现:容量管理(reserve)、元素操作(push_back/pop_back)、插入删除(insert/erase)、大小调整(resize)等;3. 特殊成员函数实现:拷贝构造、迭代器构造、赋值重载和析构;4. 注意事项:如扩容时的深拷贝问题、迭代器失效问题等。文章提供了完整的实现代码,展示了vector的核心功能和实现细节,特别强调了内存管理和数据拷贝的正确处理方式。
2025-06-01 22:37:16
519
原创 【C++】string类
本文介绍了C++标准库中string类的基本使用和相关特性。主要内容包括:string类的基本介绍及头文件包含要求;C++11中auto关键字的新用法及其在变量声明中的应用;范围for循环的语法及底层实现原理。详细说明了string类的常用接口,包括构造方法(空字符串构造、字符数组构造、拷贝构造等)、容量操作(size/length/capacity等)、访问及遍历操作(下标访问、迭代器遍历、范围for循环)。文章还强调了auto关键字的使用限制,以及范围for循环对数组和容器的支持。
2025-06-01 15:33:47
707
原创 【C++】二叉搜索树
二叉搜索树(BST)是一种特殊的二叉树,其左子树的所有节点值小于等于根节点,右子树的所有节点值大于等于根节点。BST支持插入、查找和删除操作,其性能在最优情况下(完全二叉树)为O(log2N),但在最差情况下(单支树)退化为O(N)。为了提高效率,引入了平衡二叉搜索树(如AVL树和红黑树)。BST的插入操作根据节点值大小决定插入位置,查找操作从根节点开始比较,删除操作则根据节点子节点情况分为四种处理方式。BST的实现代码展示了其基本结构和操作,包括节点定义、插入、查找和删除功能。
2025-05-16 12:24:22
710
原创 【c++】继承
继承是面向对象程序设计中的重要机制,允许在保持原有类特性的基础上进行扩展,生成派生类。通过继承,可以复用基类的代码,减少冗余。例如,Student和Teacher类可以继承Person类,共享姓名、地址等属性,同时增加各自特有的属性和方法。继承分为单继承和多继承,多继承可能导致菱形继承问题,即数据冗余和二义性。虚继承可以解决这一问题。派生类的构造函数、拷贝构造函数、赋值运算符和析构函数需要调用基类对应的函数来完成基类成员的初始化或清理。继承体现了“is-a”关系,而组合体现了“has-a”关系。组合的耦合度
2025-05-13 23:17:43
914
原创 【C++】类和对象(下)
尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。对于没有显⽰在初始化列表初始化的⾃定义类型成员会调⽤这个成员类型的默认构造函数,如果没有默认构造会编译错误。C++11⽀持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显⽰在初始化列表初始化的成员使⽤的。每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地⽅。D. 输出 1 随机值。化,否则会编译报错。
2024-10-10 23:19:32
1314
原创 【C++】类和对象(中)
类的默认成员函数主要包括。需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,我们稍微了解⼀下即可。2. 构造函数构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并 不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时,空间就开好了),⽽是对象实例化时初始化对象。构造函数的本质是要替代我们以前Stack和Date类中写的Init函数的功能,构造函数⾃动调⽤的特点就完美的替代的了Init。构造函数的特点:1.函数名与类名相同。2.⽆返回值。
2024-10-09 23:22:08
862
原创 【C++】类和对象(上)
•class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。•为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。•C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是。
2024-10-08 23:24:25
945
原创 【C++】入门基础
• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以上面程序中的rand不再冲突了。要想使用命名空间域中的变量需要在变量名前加命名空间域名::(其中::是预作用限定符),如下图所示。预作用限定符(::)是C++中一个非常重要的运算符,主要用于解决命名冲突和指明成员的具体归属。
2024-07-30 22:25:39
1211
原创 动态内存管理
但是上述的开辟空间的⽅式有两个特点:• 空间开辟⼤⼩是固定的。• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。C语⾔引⼊了动态内存开辟,让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。
2024-06-08 23:23:51
1338
原创 【C语言】自定义类型:联合体和枚举
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间所以联合体也叫:共⽤体。因为共用着一块空间,所以当给联合体其中一个成员赋值,其他成员的值也跟着变化。
2024-06-08 23:23:40
1334
原创 c语言游戏实战(8):飞机大作战
飞机大作战游戏是一种非常受欢迎的射击类游戏,玩家需要控制一架战斗机在屏幕上移动,击落敌机以获得分数。本游戏使用C语言编写,旨在帮助初学者了解游戏开发的基本概念和技巧。在开始编写代码之前,我们需要先了解一下游戏的基本规则和功能:游戏界面:游戏界面是一个矩形区域,玩家可以在这个区域内控制战斗机移动和射击。战斗机:玩家控制的战斗机可以在游戏界面内自由移动,按下特定键可以发射子弹和开启技能击落敌机。敌机:敌机会从屏幕的一侧出现,并沿着直线路径向另一侧移动。玩家需要击落敌机以获得分数。
2024-06-07 23:11:34
17609
21
原创 c语言游戏实战(3):三子棋
三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子走成就视为胜利。但因棋盘太小,三子棋在很多时候会出现和棋的局面。
2024-06-07 23:10:47
5049
4
原创 vs实用调试技巧
我们在写程序的时候可能多多少少都会出现一些bug,使我们的程序不能正常运行,所以为了更快更好的找到并修复bug,使这些问题迎刃而解,学习好如何调试代码是每个学习编程的人所必备的技能。
2024-06-06 22:04:59
1637
4
原创 【数据结构初阶】栈和队列
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)(即最后面进的数据会最先出来)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。
2024-06-06 22:04:48
825
原创 【C语言】预处理详解
define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。#define 机制包括了⼀个规定,允许把参数替换到⽂本中,这种实现通常称为宏(macro)或定义宏(define macro)。
2024-06-05 21:54:18
844
原创 【C语言】编译和链接
1. 翻译环境和运行环境1. 翻译环境和运行环境在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。第2种是执⾏环境,它⽤于实际执⾏代码。
2024-06-05 21:54:05
1271
原创 【C语言】文件操作
每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名字,⽂件状态及⽂件当前的位置等)。我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出 操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。
2024-06-01 23:56:40
1680
2
原创 C语言游戏实战(11):贪吃蛇大作战(多人对战)
这款贪吃蛇大作战是一款多人游戏,玩家需要控制一条蛇在地图上移动,吞噬其他蛇或者食物来增大自己的蛇身长度和宽度。本游戏使用C语言和easyx图形库编写,旨在帮助初学者了解游戏开发的基本概念和技巧。在开始编写代码之前,我们需要先了解一下游戏的基本规则和功能:1. 游戏界面:游戏界面是一个矩形区域,玩家可以在这个区域内控制蛇的移动。2. 玩家贪吃蛇:玩家控制的小球可以在游戏界面内自由移动,按下空格键可以加速。3. ai贪吃蛇:ai贪吃蛇会在游戏界面中随机移动。
2024-05-19 23:56:05
3456
10
原创 关机恶搞小程序
当system函数的参数是"shutdown"时,它将会执行系统的关机命令。具体来说,的功能是向操作系统发送一个关机信号,请求关闭计算机。这将触发操作系统执行一系列的关机操作,包括关闭所有正在运行的程序、保存必要的系统信息、并最终关闭计算机的电源。需要注意的是,执行通常需要管理员权限,因为关机操作涉及到系统级别的资源管理。在不同的操作系统上,关机命令可能会有所不同,因此具体的实现细节可能会有所差异。总结来说,是一个用于触发计算机关机操作的命令,通过调用外部的关机命令来实现这一功能。通过改变。
2024-05-18 23:21:16
15502
20
原创 C语言游戏实战(8):飞机大作战
飞机大作战游戏是一种非常受欢迎的射击类游戏,玩家需要控制一架战斗机在屏幕上移动,击落敌机以获得分数。本游戏使用C语言编写,旨在帮助初学者了解游戏开发的基本概念和技巧。在开始编写代码之前,我们需要先了解一下游戏的基本规则和功能:游戏界面:游戏界面是一个矩形区域,玩家可以在这个区域内控制战斗机移动和射击。战斗机:玩家控制的战斗机可以在游戏界面内自由移动,按下特定键可以发射子弹和开启技能击落敌机。敌机:敌机会从屏幕的一侧出现,并沿着直线路径向另一侧移动。玩家需要击落敌机以获得分数。
2024-05-15 23:59:41
11167
10
原创 【C语言】字符函数和字符串函数
在编程的过程中,我们经常要处理字符和字符串,C语言标准库中提供了一系列库函数,接下来我们一起学习一下这些函数。
2024-03-25 11:59:17
1997
14
原创 【c语言】详解操作符(上)
整数的2进制表示方法有三种,即原码、反码、补码有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号位其余都是数值位。符号位都是用0表示“正”,用1表示“负”。例:分别写出1、-1的2进制其中a、b都是整形变量,是4个字节,32bit位,那么a、b的2进制为:直接将数值按照正负数形式翻译成2进制得到的就是原码。将原码的符号位不变,其他位依次按位取反就可以得到反码。反码加1就可以得到补码。补码得到原码也是可以使用取反加1的操作。
2024-03-24 16:01:21
2671
2
原创 【c语言】详解操作符(下)
在上文中,我们已经学习了、反码、补码、移位 操作符、移位操作符、位操作符、逗号表达式、下标访问[ ]、函数调用( ),接下来我们将继续学习剩下的操作符。
2024-03-24 16:00:37
1748
1
原创 【c语言】深入理解指针(2)
可以利用字符指针存放字符数组来间接存放字符串。那我们可不可以直接给字符指针存放字符串呢?我们来看一下结果:可以看到是可以直接给字符指针存放字符串,其实指针仅仅存放了字符串首字母的地址,%s会根据这个首字母的地址依次打印字符,当遇到空字符‘\0’则会停止打印,从而打印出了完整的字符串。字符指针存放字符数组的字符串可修改,而存放字符串字面量不可修改,因为。
2024-02-07 10:34:05
3020
原创 【c语言】深入理解指针(1)
数组名是数组首元素的地址:但是有两个例外:1. sizeof(数组名),sizeof中单独放一个数组名的时候,这里的数组名表示的是整个数组,计算的是整个数组的大小,单位是字节。2. &数组名,这里的数组名表示的是整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素的地址是有区别的)。可以看到&arr + 1后地址是跳过40个字节的(这刚好是整个数组的大小),而其余两种的+1都只是跳过4个字节(这刚好是整型变量的大小)而已。
2024-02-01 18:44:24
1211
3
原创 【c语言】函数递归
在C语⾔中每⼀次函数调⽤,都要需要为本次函数调⽤在栈区申请⼀块内存空间来保存函数调⽤间的各种局部变量的值,这块空间被称为运⾏时堆栈,或者函数栈帧。
2024-01-30 00:17:43
1701
4
原创 c语言游戏实战(7):扫雷(下)
扫雷是一款经典的单人益智游戏,它的目标是在一个方格矩阵中找出所有的地雷,而不触碰到任何一颗地雷。在计算机编程领域,扫雷也是一个非常受欢迎的项目,因为它涉及到许多重要的编程概念,如数组、循环、条件语句和函数等。C语言是一种广泛使用的编程语言,它具有高效、灵活和可移植等特点,非常适合编写各种类型的应用程序。因此,使用C语言编写一个扫雷游戏是一个很好的学习编程的项目。在这篇博客中,我们将介绍如何使用C语言编写一个简单的扫雷游戏。我们将从基本的编程概念开始讲解,逐步深入到更复杂的程序设计技术。
2024-01-17 12:50:31
2535
1
原创 c语言游戏实战(6):走迷宫之推箱子
在上一篇文章当中我介绍了一个走迷宫的写法,但是那个迷宫没什么可玩性和趣味性,所以我打算在迷宫的基础上加上一个推箱子,使之有更好的操作空间。
2024-01-16 18:28:16
1795
4
原创 c语言游戏实战(5):走迷宫
制作一个迷宫游戏是一个有趣的编程挑战。首先,我们需要设计一个二维数组来表示迷宫的布局,其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来,我们需生成迷宫。在生成迷宫的过程中,我们需要确保迷宫中有足够的障碍物,以便玩家需要找到一条从起点到终点的路径。最后,我们需要编写代码来显示迷宫,接收用户的输入,更新迷宫的状态,判断游戏是否结束,并提供重新开始的选项。通过完成这个迷宫游戏项目,我们可以提高自己的编程能力和逻辑思维能力。
2024-01-15 13:08:27
5273
13
原创 汉诺塔问题
Hanoi(汉诺)塔问题。这时一个古典的数学问题,是一个递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C(如下图)。开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动盘子的步骤。
2024-01-02 22:45:03
1647
原创 C语言指针(下)
上文我们已经学习了指针的基本概念内存单元地址的产生,以及指针和指针的类型。这时我们对指针已经有了一个初步的了解,接下来我们将继续深入的学习指针用法。
2023-12-23 16:43:50
847
1
C语言游戏实战(11):植物大战僵尸(坤版)的图片素材
2024-05-18
C语言-坤坤的篮球回避秀
2024-03-07
c语言游戏实战(10):坤坤的篮球回避秀的图片资源
2024-03-05
c语言-飞机大作战软件
2024-03-04
c语言-球球大作战软件
2024-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人