大数跨境
0
0

零基础开发C++游戏 专栏上线

零基础开发C++游戏 专栏上线 CppGuide
2025-04-03
1
导读:搞了一个《零基础开发C++游戏》的专栏放在小方说服务器知识星球,以飨球友。

搞了一个《零基础开发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++中的ifelse
    • 如果他们过桥,就射击!
    • 否则执行其他操作
    • 读者挑战
    • 在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快速指南》

小方说服务器开发为球友提供如下服务:

  1. 优问优答
  2. 不定期的技术直播和录像
  3. 优质源码分享和指导
  4. 职业解惑、简历review、模拟面试、求职辅导、大厂内推、副业交流等
  5. 十四大技术专栏

星球运营五载,好评如潮。

值此金三银四之际,星球原价 325/年,扫码加入立即优惠 40 元


老球友扫码下面的二维码续费,在半价的基础上再优惠 20 元


【声明】内容源于网络
0
0
CppGuide
专注于高质量高性能C++开发,站点:cppguide.cn
内容 1260
粉丝 0
CppGuide 专注于高质量高性能C++开发,站点:cppguide.cn
总阅读895
粉丝0
内容1.3k