搞了一个《零基础开发C++游戏》的专栏放在小方说服务器知识星球,以飨球友。
真的是零基础,因为阅读者不需要任何C++基础,会从基本的C++开发环境介绍到C++类语法、STL容器,在熟悉这些知识后开始从零写四个流行的小游戏。
技多不压身,有兴趣的小伙伴可以拉到文章底部成为球友阅读。
以下是详细目录:
目录
-
第1章:欢迎阅读
-
配置错误 -
编译错误 -
链接错误 -
程序bug -
使用纹理准备精灵 -
对背景精灵进行双缓冲处理 -
运行游戏 -
while循环 -
C风格的代码注释 -
输入、更新、绘制、重复 -
检测按键 -
清除并绘制场景 -
运行游戏 -
引入SFML的功能 -
面向对象编程、类和对象 -
使用命名空间sf -
SFML的VideoMode和RenderWindow -
运行游戏 -
用注释让代码更清晰 -
主函数 -
代码呈现与语法 -
从函数返回值 -
运行游戏 -
制作自己的音效 -
将资源添加到项目中 -
探索资源 -
配置项目属性 -
SFML库 -
微软Visual Studio -
Mac和Linux系统呢? -
安装Visual Studio 2022 -
《木材!!!》 -
《乒乓》 -
《僵尸竞技场》 -
平台游戏 -
我们将制作的游戏 -
为何在2024年应使用C++学习游戏编程 -
设置SFML -
在Visual Studio 2022中创建新项目 -
规划Timber!!! -
项目资源 -
理解屏幕坐标和内部坐标 -
开始编写游戏代码 -
使用SFML打开窗口 -
游戏循环 -
绘制游戏背景 -
处理错误 -
总结 -
常见问题解答 -
第2章:变量、运算符和判断:为精灵制作动画
-
让蜜蜂动起来 -
飘动的云朵 -
帧率问题 -
SFML的帧率解决方案 -
逻辑运算符 -
C++中的 if和else -
如果他们过桥,就射击! -
否则执行其他操作 -
读者挑战 -
在C++中生成随机数 -
准备树 -
准备蜜蜂 -
准备云朵 -
绘制树、蜜蜂和云朵 -
C++算术运算符和赋值运算符 -
用表达式实现功能 -
赋值 -
自增和自减 -
声明变量
-
初始化变量
-
一步完成声明和初始化
-
常量
-
统一初始化
-
声明和初始化用户定义类型
-
变量类型 -
用户定义类型 -
全面学习C++变量
-
声明和初始化变量
-
操作变量
-
添加云朵、嗡嗡叫的蜜蜂和一棵树
-
随机数
-
使用if和else进行判断
-
计时
-
移动云朵和蜜蜂
-
总结
-
常见问题
-
第3章:C++字符串、SFML时间:玩家输入与平视显示器
-
声明字符串 -
给字符串赋值 -
字符串拼接 -
获取字符串长度 -
用StringStream以另一种方式操作字符串 -
SFML文本和字体 -
暂停和重新开始游戏 -
C++字符串 -
添加分数和消息 -
添加时间条 -
总结 -
常见问题 -
第4章:循环、数组、switch语句、枚举和函数:实现游戏机制
-
准备树枝 -
每一帧更新树枝精灵 -
绘制树枝 -
移动树枝 -
谁设计了这些奇怪又让人抓狂的语法?为什么是这样的? -
函数返回类型 -
函数名 -
函数参数 -
函数体 -
函数原型 -
组织函数 -
函数作用域 -
关于函数的最后一点说明(目前为止) -
声明数组 -
初始化数组元素 -
这些数组对我们的游戏有什么实际作用? -
快速初始化数组元素 -
while循环 -
跳出循环 -
for循环 -
循环 -
数组 -
用switch语句进行判断 -
枚举 -
函数入门 -
生成树枝 -
总结 -
常见问题 -
第5章:碰撞、声音和结束条件:让游戏可玩
-
SFML音效的工作原理 -
何时播放音效 -
添加音效代码 -
处理新游戏设置 -
检测玩家砍伐动作 -
检测按键释放 -
为砍伐的原木和斧头制作动画 -
准备玩家(和其他精灵) -
绘制玩家和其他精灵 -
处理玩家输入 -
处理死亡情况 -
简单音效 -
改进游戏和代码 -
总结 -
常见问题 -
第6章:面向对象编程 - 开始制作乒乓球游戏
-
编写 Bat.h -
构造函数 -
继续解释 Bat.h -
编写 Bat.cpp -
声明类、变量和函数 -
类函数定义 -
使用类的实例 -
封装 -
多态 -
继承 -
为什么使用面向对象编程? -
类究竟是什么? -
面向对象编程 -
乒乓球拍的理论 -
创建乒乓球项目 -
编写 Bat类 -
使用 Bat类并编写主函数 -
总结 -
常见问题 -
第7章:轴对齐包围盒碰撞检测和物理 - 完成《乒乓》游戏
-
编写 Ball类 -
使用 Ball类 -
碰撞检测和计分 -
运行游戏 -
学习C++的箭头运算符 -
总结 -
常见问题解答 -
第8章:SFML视图 - 开始制作《僵尸射击》游戏
-
编写Player类头文件 -
编写Player类函数定义 -
创建新项目 -
项目资源 -
探索资源 -
将资源添加到项目中 -
规划并开始制作《僵尸竞技场》游戏 -
面向对象编程与《僵尸竞技场》项目 -
构建层级 - 第一个类 -
用SFML视图控制游戏相机 -
启动《僵尸竞技场》游戏引擎 -
管理代码文件 -
开始编写主游戏循环 -
总结 -
常见问题解答 -
第9章:C++引用、精灵表和顶点数组
-
用图块构建背景 -
构建顶点数组 -
使用顶点数组进行绘制 -
什么是精灵表? -
总结引用 -
理解C++引用 -
SFML顶点数组和精灵表 -
什么是顶点数组? -
创建随机生成的滚动背景 -
使用背景 -
总结 -
常见问题解答 -
第10章:指针、标准模板库和纹理管理
-
什么是vector? -
什么是map? -
声明vector -
向vector添加数据 -
访问vector中的数据 -
从vector中删除数据 -
检查vector的大小 -
遍历vector的元素 -
声明map -
向map添加数据 -
在map中查找数据 -
从map中删除数据 -
检查map的大小 -
检查map中是否存在键 -
遍历map的键值对 -
指针语法 -
声明指针 -
初始化指针 -
重新初始化指针 -
解引用指针 -
指针用途广泛且功能强大 -
指针和数组 -
指针总结 -
动态分配内存 -
将指针传递给函数 -
声明并使用指向对象的指针 -
学习指针 -
学习标准模板库 -
auto关键字 -
标准模板库总结 -
总结 -
常见问题解答 -
第11章:编写
TextureHolder类并创建一群僵尸 -
更改背景获取纹理的方式 -
更改 Player类获取纹理的方式 -
编写 Zombie.h文件 -
编写 Zombie.cpp文件 -
使用 Zombie类创建一群僵尸 -
让这群僵尸“活起来” -
编写 TextureHolder头文件 -
编写 TextureHolder函数定义 -
我们通过 TextureHolder类实现了什么? -
实现 TextureHolder类 -
创建一群僵尸 -
为所有纹理使用 TextureHolder类 -
总结 -
常见问题解答 -
第12章:碰撞检测、拾取物和子弹
-
僵尸被击中了吗? -
玩家被僵尸碰到了吗? -
玩家碰到拾取物了吗? -
编写拾取物头文件 -
编写拾取物类函数定义 -
包含 Bullet类 -
控制变量和子弹数组 -
重新装填枪支 -
发射子弹 -
在每一帧更新子弹 -
在每一帧绘制子弹 -
给玩家添加准星 -
编写 Bullet头文件 -
编写 Bullet源文件 -
编写 shoot函数 -
更多子弹函数 -
Bullet类的update函数 -
在 shoot函数中计算斜率 -
在 shoot函数中使斜率为正 -
在 shoot函数中计算X和Y之间的比例 -
完成对 shoot函数的讲解 -
编写 Bullet类 -
让子弹飞起来 -
编写拾取物类 -
使用拾取物类 -
检测碰撞 -
总结 -
常见问题解答 -
第13章:分层视图和实现HUD
-
添加所有文本和HUD对象 -
更新HUD -
绘制平视显示器(HUD)、主界面和升级界面 -
总结 -
第14章:音效、文件输入/输出和完成游戏
-
在玩家重新装填时添加音效 -
制作射击音效 -
在玩家被击中时播放音效 -
在玩家拾取物品时播放音效 -
在僵尸被击中时制作溅血音效 -
保存和加载高分 -
准备音效 -
允许玩家升级并生成新一波敌人 -
重新开始游戏 -
播放其余音效 -
总结 -
常见问题解答 -
第15章:运行!
-
为什么管理多种不同类型的对象很困难 -
使用通用 GameObject改善代码结构 -
优先使用组合而非继承 -
工厂模式 -
C++智能指针 -
转换智能指针 -
编写 GameObject类 -
编写 Component类 -
编写 Graphics类 -
编写 Update类 -
运行代码 -
接下来做什么? -
shared_ptr -
unique_ptr -
继承 -
扩展类 -
多态 -
抽象类:虚函数和纯虚函数 -
关于这款游戏 -
创建项目 -
编写主函数 -
处理输入 -
编写 Factory类 -
高级面向对象编程:继承和多态 -
设计模式 -
实体组件系统模式 -
总结 -
第16章:音效、游戏逻辑、对象间通信和玩家
-
记住纹理坐标 -
编写 PlayerUpdate类 -
编写 PlayerGraphics类 -
编写 LevelUpdate类 -
编写 SoundEngine类 -
编写游戏逻辑 -
编写玩家相关内容:第一部分 -
编写 Animator类 -
运行游戏 -
总结 -
第17章:图形、相机、动作
-
编写 CameraUpdate类 -
编写 CameraGraphics类(第一部分) -
SFML的 View类 -
编写 CameraGraphics类(第二部分) -
相机、绘制所有内容和SFML视图 -
编写相机类 -
向游戏中添加相机实例 -
运行游戏 -
总结 -
第18章:编写平台、玩家动画和控制代码
-
编写玩家控制代码 -
编写 PlatformUpdate类 -
编写 PlatformGraphics类 -
在工厂中构建一些平台 -
编写 PlatformUpdate类的update函数 -
编写平台相关代码 -
运行游戏 -
为玩家添加功能 -
运行游戏 -
编写 Animator类 -
编写玩家动画 -
运行游戏 -
总结 -
第19章:构建菜单并实现下雨效果
-
编写 RainGraphics类 -
在工厂类中实现下雨效果 -
编写 MenuUpdate类 -
编写 MenuGraphics类 -
在工厂类中构建菜单 -
构建交互式菜单 -
运行游戏 -
实现下雨效果 -
运行游戏 -
总结 -
第20章:火球和空间化
-
编写 FireballUpdate类 -
编写 FireballGraphics类 -
在工厂中构建一些火球 -
编写 FireballGraphics.h文件 -
编写 FireballGraphics.cpp文件 -
发射器、衰减和收听者 -
什么是空间化? -
使用SFML处理空间化 -
升级SoundEngine类 -
火球 -
运行游戏 -
总结 -
第21章:视差背景和着色器
-
拆分新的绘制代码 -
可编程管线和着色器 -
编写一个假设的片段着色器 -
编写一个假设的顶点着色器 -
学习 OpenGL、着色器和 GLSL -
完成 CameraGraphics类的编写 -
为游戏编写着色器 -
运行完整的游戏 -
总结 -
进一步阅读
成为球友
小方说服务器开发知识星球近期新增如下专栏:
-
《用C++17从零开发一个调试器》
-
《Linux 5.x内核开发与调试 完全指南》
-
《使用C++20从零构建一个完整的低延迟交易系统》
-
《用C++零基础写4个流行小游戏》
星球目前一共 14 个技术专栏,即将上线的专栏:
-
《用C++从零写一个编译器》
-
《C++23快速指南》
小方说服务器开发为球友提供如下服务:
-
优问优答 -
不定期的技术直播和录像 -
优质源码分享和指导 -
职业解惑、简历review、模拟面试、求职辅导、大厂内推、副业交流等 -
十四大技术专栏
星球运营五载,好评如潮。
值此金三银四之际,星球原价 325/年,扫码加入立即优惠 40 元:
老球友扫码下面的二维码续费,在半价的基础上再优惠 20 元。

