CppGuide社区 CppGuide社区
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
🔥C++面试
  • 第1章 C++ 惯用法与Modern C++篇
  • 第2章 C++开发工具与调试进阶
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 网络通信协议设计
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 服务其他模块设计
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 🔥C++游戏编程入门(零基础学C++)
  • 🔥使用C++17从零开发一个调试器 (opens new window)
  • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
  • 🔥使用C++从零写一个C语言编译器 (opens new window)
  • 🔥从零用C语言写一个Redis
  • leveldb源码分析
  • libevent源码分析
  • Memcached源码分析
  • TeamTalk源码分析
  • 优质源码分享 (opens new window)
  • 🔥远程控制软件gh0st源码分析
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • 高效Go并发编程
  • Go性能调优
  • Go项目架构设计
  • 🔥使用Go从零开发一个数据库
  • 🔥使用Go从零开发一个编译器 (opens new window)
  • 🔥使用Go从零开发一个解释器 (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
🔥C++面试
  • 第1章 C++ 惯用法与Modern C++篇
  • 第2章 C++开发工具与调试进阶
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 网络通信协议设计
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 服务其他模块设计
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 🔥C++游戏编程入门(零基础学C++)
  • 🔥使用C++17从零开发一个调试器 (opens new window)
  • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
  • 🔥使用C++从零写一个C语言编译器 (opens new window)
  • 🔥从零用C语言写一个Redis
  • leveldb源码分析
  • libevent源码分析
  • Memcached源码分析
  • TeamTalk源码分析
  • 优质源码分享 (opens new window)
  • 🔥远程控制软件gh0st源码分析
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • 高效Go并发编程
  • Go性能调优
  • Go项目架构设计
  • 🔥使用Go从零开发一个数据库
  • 🔥使用Go从零开发一个编译器 (opens new window)
  • 🔥使用Go从零开发一个解释器 (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
  • C++游戏编程入门(零基础学C++) 说明
    • 翻译说明
    • 目录
  • 第1章 欢迎阅读
  • 第2章 变量、运算符与决策:精灵动画
  • 第3章 C++字符串、SFML时间:玩家输入与平视显示器
  • 第4章 循环、数组、switch语句、枚举和函数:实现游戏机制
  • 第5章 碰撞、音效与结束条件:让游戏可玩
  • 第6章 面向对象编程——开始开发《乒乓》游戏
  • 第7章 AABB碰撞检测与物理效果——完成乒乓球游戏
  • 第8章 SFML视图——开启丧尸射击游戏
  • 第9章 C++引用、精灵表和顶点数组
  • 第10章 指针、标准模板库和纹理管理
  • 第11章 编写TextureHolder类并创建一群僵尸
  • 第12章 碰撞检测、拾取物与子弹
  • 第13章 视图分层与平视显示器(HUD)的实现
  • 第14章 音效、文件输入输出与完成游戏制作
  • 第15章 快跑!
  • 第16章 声音、游戏逻辑、对象间通信与玩家
  • 第17章 图形、相机与动作
  • 第18章 为平台、玩家动画和控制功能编写代码
  • 第19章 构建菜单与实现下雨效果
  • 第20章 火球与声音空间化
  • 第21章 视差背景与着色器
目录

C++游戏编程入门(零基础学C++) 说明

# C++游戏编程入门(零基础学C++) 说明

# 翻译说明

Page Views Count (opens new window)

如果你连C++基础语法都不熟悉,并且想学习C++,或者想学习游戏开发,那么本专栏特别适合你。

本专栏适合没有任何C++语言基础的同学,也适合其他编程语言想往C++语言转的读者。

在这个专栏中,我们将使用C++开发4个流行的小游戏。

本专栏翻译自《Beginning C++ Game Programming——Learn C++ from scratch by building fun games》(第三版)。

限于水平有限,若发现翻译有不当之处。欢迎交流。

# 目录

  • 第1章:欢迎阅读《C++游戏编程入门(第三版)》

    • 我们将制作的游戏
      • 《木材!!!》
      • 《乒乓》
      • 《僵尸竞技场》
      • 平台游戏
    • 为何在2024年应使用C++学习游戏编程
      • SFML库
      • 微软Visual Studio
      • Mac和Linux系统呢?
      • 安装Visual Studio 2022
    • 设置SFML
    • 在Visual Studio 2022中创建新项目
      • 配置项目属性
    • 规划Timber!!!
    • 项目资源
      • 制作自己的音效
      • 将资源添加到项目中
      • 探索资源
    • 理解屏幕坐标和内部坐标
    • 开始编写游戏代码
      • 用注释让代码更清晰
      • 主函数
      • 代码呈现与语法
      • 从函数返回值
      • 运行游戏
    • 使用SFML打开窗口
      • 引入SFML的功能
      • 面向对象编程、类和对象
      • 使用命名空间sf
      • SFML的VideoMode和RenderWindow
      • 运行游戏
    • 游戏循环
      • while循环
      • C风格的代码注释
      • 输入、更新、绘制、重复
      • 检测按键
      • 清除并绘制场景
      • 运行游戏
    • 绘制游戏背景
      • 使用纹理准备精灵
      • 对背景精灵进行双缓冲处理
      • 运行游戏
    • 处理错误
      • 配置错误
      • 编译错误
      • 链接错误
      • 程序bug
    • 总结
    • 常见问题解答
  • 第2章:变量、运算符和判断:为精灵制作动画

    • 全面学习C++变量

      • 变量类型
      • 用户定义类型
    • 声明和初始化变量

      • 声明变量

      • 初始化变量

      • 一步完成声明和初始化

      • 常量

      • 统一初始化

      • 声明和初始化用户定义类型

    • 操作变量

      • C++算术运算符和赋值运算符
      • 用表达式实现功能
        • 赋值
        • 自增和自减
    • 添加云朵、嗡嗡叫的蜜蜂和一棵树

      • 准备树
      • 准备蜜蜂
      • 准备云朵
      • 绘制树、蜜蜂和云朵
    • 随机数

      • 在C++中生成随机数
    • 使用if和else进行判断

      • 逻辑运算符
      • C++中的if和else
      • 如果他们过桥,就射击!
      • 否则执行其他操作
      • 读者挑战
    • 计时

      • 帧率问题
      • SFML的帧率解决方案
    • 移动云朵和蜜蜂

      • 让蜜蜂动起来
      • 飘动的云朵
    • 总结

    • 常见问题

  • 第3章:C++字符串、SFML时间:玩家输入与平视显示器

    • 暂停和重新开始游戏
    • C++字符串
      • 声明字符串
      • 给字符串赋值
      • 字符串拼接
      • 获取字符串长度
      • 用StringStream以另一种方式操作字符串
      • SFML文本和字体
    • 添加分数和消息
    • 添加时间条
    • 总结
    • 常见问题
  • 第4章:循环、数组、switch语句、枚举和函数:实现游戏机制

    • 循环
      • while循环
      • 跳出循环
      • for循环
    • 数组
      • 声明数组
      • 初始化数组元素
        • 快速初始化数组元素
      • 这些数组对我们的游戏有什么实际作用?
    • 用switch语句进行判断
    • 枚举
    • 函数入门
      • 谁设计了这些奇怪又让人抓狂的语法?为什么是这样的?
      • 函数返回类型
      • 函数名
      • 函数参数
      • 函数体
      • 函数原型
      • 组织函数
      • 函数作用域
      • 关于函数的最后一点说明(目前为止)
    • 生成树枝
      • 准备树枝
      • 每一帧更新树枝精灵
      • 绘制树枝
      • 移动树枝
    • 总结
    • 常见问题
  • 第5章:碰撞、声音和结束条件:让游戏可玩

    • 准备玩家(和其他精灵)
    • 绘制玩家和其他精灵
    • 处理玩家输入
      • 处理新游戏设置
      • 检测玩家砍伐动作
      • 检测按键释放
      • 为砍伐的原木和斧头制作动画
    • 处理死亡情况
    • 简单音效
      • SFML音效的工作原理
      • 何时播放音效
      • 添加音效代码
    • 改进游戏和代码
    • 总结
    • 常见问题
  • 第6章:面向对象编程 - 开始制作乒乓球游戏

    • 面向对象编程
      • 封装
      • 多态
      • 继承
      • 为什么使用面向对象编程?
      • 类究竟是什么?
    • 乒乓球拍的理论
      • 声明类、变量和函数
      • 类函数定义
      • 使用类的实例
    • 创建乒乓球项目
    • 编写Bat类
      • 编写Bat.h
      • 构造函数
      • 继续解释Bat.h
      • 编写Bat.cpp
    • 使用Bat类并编写主函数
    • 总结
    • 常见问题
  • 第7章:轴对齐包围盒碰撞检测和物理 - 完成《乒乓》游戏

    • 编写Ball类
    • 使用Ball类
    • 碰撞检测和计分
    • 运行游戏
    • 学习C++的箭头运算符
    • 总结
    • 常见问题解答
  • 第8章:SFML视图 - 开始制作《僵尸射击》游戏

    • 规划并开始制作《僵尸竞技场》游戏
      • 创建新项目
      • 项目资源
      • 探索资源
      • 将资源添加到项目中
    • 面向对象编程与《僵尸竞技场》项目
    • 构建层级 - 第一个类
      • 编写Player类头文件
      • 编写Player类函数定义
    • 用SFML视图控制游戏相机
    • 启动《僵尸竞技场》游戏引擎
    • 管理代码文件
    • 开始编写主游戏循环
    • 总结
    • 常见问题解答
  • 第9章:C++引用、精灵表和顶点数组

    • 理解C++引用
      • 总结引用
    • SFML顶点数组和精灵表
      • 什么是精灵表?
    • 什么是顶点数组?
      • 用图块构建背景
      • 构建顶点数组
      • 使用顶点数组进行绘制
    • 创建随机生成的滚动背景
    • 使用背景
    • 总结
    • 常见问题解答
  • 第10章:指针、标准模板库和纹理管理

    • 学习指针
      • 指针语法
      • 声明指针
      • 初始化指针
      • 重新初始化指针
      • 解引用指针
      • 指针用途广泛且功能强大
        • 动态分配内存
        • 将指针传递给函数
        • 声明并使用指向对象的指针
      • 指针和数组
      • 指针总结
    • 学习标准模板库
      • 什么是vector?
        • 声明vector
        • 向vector添加数据
        • 访问vector中的数据
        • 从vector中删除数据
        • 检查vector的大小
        • 遍历vector的元素
      • 什么是map?
        • 声明map
        • 向map添加数据
        • 在map中查找数据
        • 从map中删除数据
        • 检查map的大小
        • 检查map中是否存在键
        • 遍历map的键值对
    • auto关键字
    • 标准模板库总结
    • 总结
    • 常见问题解答
  • 第11章:编写TextureHolder类并创建一群僵尸

    • 实现TextureHolder类
      • 编写TextureHolder头文件
      • 编写TextureHolder函数定义
      • 我们通过TextureHolder类实现了什么?
    • 创建一群僵尸
      • 编写Zombie.h文件
      • 编写Zombie.cpp文件
      • 使用Zombie类创建一群僵尸
      • 让这群僵尸“活起来”
    • 为所有纹理使用TextureHolder类
      • 更改背景获取纹理的方式
      • 更改Player类获取纹理的方式
    • 总结
    • 常见问题解答
  • 第12章:碰撞检测、拾取物和子弹

    • 编写Bullet类
      • 编写Bullet头文件
      • 编写Bullet源文件
      • 编写shoot函数
        • 在shoot函数中计算斜率
        • 在shoot函数中使斜率为正
        • 在shoot函数中计算X和Y之间的比例
        • 完成对shoot函数的讲解
      • 更多子弹函数
      • Bullet类的update函数
    • 让子弹飞起来
      • 包含Bullet类
      • 控制变量和子弹数组
      • 重新装填枪支
      • 发射子弹
      • 在每一帧更新子弹
      • 在每一帧绘制子弹
      • 给玩家添加准星
    • 编写拾取物类
      • 编写拾取物头文件
      • 编写拾取物类函数定义
    • 使用拾取物类
    • 检测碰撞
      • 僵尸被击中了吗?
      • 玩家被僵尸碰到了吗?
      • 玩家碰到拾取物了吗?
    • 总结
    • 常见问题解答
  • 第13章:分层视图和实现HUD

    • 添加所有文本和HUD对象
    • 更新HUD
    • 绘制平视显示器(HUD)、主界面和升级界面
    • 总结
  • 第14章:音效、文件输入/输出和完成游戏

    • 保存和加载高分
    • 准备音效
    • 允许玩家升级并生成新一波敌人
    • 重新开始游戏
    • 播放其余音效
      • 在玩家重新装填时添加音效
      • 制作射击音效
      • 在玩家被击中时播放音效
      • 在玩家拾取物品时播放音效
      • 在僵尸被击中时制作溅血音效
    • 总结
    • 常见问题解答
  • 第15章:运行!

    • 关于这款游戏
    • 创建项目
    • 编写主函数
    • 处理输入
    • 编写Factory类
    • 高级面向对象编程:继承和多态
      • 继承
      • 扩展类
      • 多态
      • 抽象类:虚函数和纯虚函数
    • 设计模式
    • 实体组件系统模式
      • 为什么管理多种不同类型的对象很困难
      • 使用通用GameObject改善代码结构
      • 优先使用组合而非继承
      • 工厂模式
      • C++智能指针
        • shared_ptr
        • unique_ptr
      • 转换智能指针
      • 编写GameObject类
      • 编写Component类
      • 编写Graphics类
      • 编写Update类
      • 运行代码
      • 接下来做什么?
    • 总结
  • 第16章:音效、游戏逻辑、对象间通信和玩家

    • 编写SoundEngine类
    • 编写游戏逻辑
      • 编写LevelUpdate类
    • 编写玩家相关内容:第一部分
      • 编写PlayerUpdate类
      • 编写PlayerGraphics类
    • 编写Animator类
      • 记住纹理坐标
    • 运行游戏
    • 总结
  • 第17章:图形、相机、动作

    • 相机、绘制所有内容和SFML视图
    • 编写相机类
      • 编写CameraUpdate类
      • 编写CameraGraphics类(第一部分)
      • SFML的View类
      • 编写CameraGraphics类(第二部分)
    • 向游戏中添加相机实例
    • 运行游戏
    • 总结
  • 第18章:编写平台、玩家动画和控制代码

    • 编写平台相关代码
      • 编写PlatformUpdate类
        • 编写PlatformUpdate类的update函数
      • 编写PlatformGraphics类
      • 在工厂中构建一些平台
    • 运行游戏
    • 为玩家添加功能
      • 编写玩家控制代码
    • 运行游戏
    • 编写Animator类
    • 编写玩家动画
    • 运行游戏
    • 总结
  • 第19章:构建菜单并实现下雨效果

    • 构建交互式菜单
      • 编写MenuUpdate类
      • 编写MenuGraphics类
      • 在工厂类中构建菜单
    • 运行游戏
    • 实现下雨效果
      • 编写RainGraphics类
      • 在工厂类中实现下雨效果
    • 运行游戏
    • 总结
  • 第20章:火球和空间化

    • 什么是空间化?
      • 发射器、衰减和收听者
    • 使用SFML处理空间化
    • 升级SoundEngine类
    • 火球
      • 编写FireballUpdate类
      • 编写FireballGraphics类
        • 编写FireballGraphics.h文件
        • 编写FireballGraphics.cpp文件
      • 在工厂中构建一些火球
    • 运行游戏
    • 总结
  • 第21章:视差背景和着色器

    • 学习 OpenGL、着色器和 GLSL
      • 可编程管线和着色器
      • 编写一个假设的片段着色器
      • 编写一个假设的顶点着色器
    • 完成CameraGraphics类的编写
      • 拆分新的绘制代码
    • 为游戏编写着色器
    • 运行完整的游戏
    • 总结
    • 进一步阅读
第1章 欢迎阅读

第1章 欢迎阅读→

最近更新
01
C++语言面试问题集锦 目录与说明
03-27
02
第四章 Lambda函数
03-27
03
第二章 关键字static及其不同用法
03-27
更多文章>
Copyright © 2024-2025 沪ICP备2023015129号 张小方 版权所有
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式