C/C++教程 第五章 —— 制作推箱子游戏

54 篇文章 160 订阅 ¥299.90 ¥99.00

注意

本专栏已在我的个人站点中完成更新升级,可点击这里直达。

本专栏不再更新,如有需要,最好前往我的自建站点中购买:https://www.kucoding.com,价格更加实惠,内容更加丰富。


一、项目准备

相信大家应该都玩过推箱子这个小游戏,真可称为童年经典

本文就将开始带大家实战,从0写一个推箱子小游戏(自然不会是字符游戏,而是真真切切的推箱子游戏)!

还是老规矩,先在原解决方案中,新建一个项目,项目名为:day5--BoxMan,设置为启动项,并添加一个main.cpp的文件

在这里插入图片描述

既然是写游戏,用控制台肯定不行,太难看了,同时为了兼顾从没有接触过图形编程的新手,所以我打算采用EGE图形库

这个库的使用非常简单,体积也很小,非常适合新手学习

下载地址:

xege.org
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
如 果你会一点C、C++语言,你就可以学习游戏编程了,开发真正的游戏!如果你学过一点C++更好,没学过也没关系。本课程教你从零基础开始开发7个完整的 游戏:Brainiac、Light Cycles、Henway、Battle Office、Meteor Defense、Space Out、Stunt Jumper。教程无KEY wmv版本,手机平板等移动设备均可观看! 第1部分 入门 第1章 学习开发游戏的基础知识 1.1 认识视频游戏 1.1.1 为什么人们如此沉迷于开发视频游戏 1.1.2 视频游戏的类型 1.2 学习游戏设计的要素 1.2.1 提出基本思想 1.2.2 整理剧情 1.2.3 可视化图形 1.2.4 为游戏选择正确的声音 1.2.5 使用控制器控制游戏 1.2.6 确定游戏模式 1.3 面向对象的编程和游戏 1.3.1 理解OOP 1.3.2 在游戏中应用OOP 1.4 研究相关工具 1.4.1 编译器和开发环境 1.4.2 选择图形工具 1.4.3 选择声音和音乐工具 1.5 小结 1.6 亲身实践 第2章 创建游戏引擎 2.1 什么是游戏引擎 2.2 考虑游戏引擎的作用 2.2.1 将游戏分解为事件 2.2.2 建立游戏的计时机制 2.3 开发游戏引擎 2.3.1 游戏事件函数 2.3.2 GameEngine类 2.4 开发Blizzard示例 2.4.1 编写程序代码 2.4.2 测试完成的程序 2.5 小结 2.6 游戏大变身 第3章 学习绘制基本图形 3.1 图形基础 3.1.1 理解图形坐标系统 3.1.2 学习颜色的基础知识 3.2 查看Windows中的图形 3.2.1 使用设备环境 3.2.2 使用画笔写 3.2.3 使用画刷绘制 3.2.4 使用位图绘制图像 3.2.5 使用调色板管理颜色 3.3 绘制窗口 3.3.1 绘制文本 3.3.2 绘制图元 3.3.3 使用画笔和画刷 3.4 开发Crop Circles示例 3.4.1 编写程序代码 3.4.2 测试完成的程序 3.5 小结 3.6 亲身实践 第4章 绘制图形图像 4.1 位图图像的基础知识 4.2 深入学习位图 4.3 开发位图类 4.3.1 位图类的工作原理 4.3.2 整合代码 4.4 开发Slideshow示例 4.4.1 编写程序代码 4.4.2 汇集资源 4.4.3 测试完成的程序 4.5 小结 4.6 游戏大变身 第2部分 与游戏玩家交互 第5章 使用键盘和鼠标控制游戏 5.1 游戏与用户输入 5.2 了解用户输入设备 5.2.1 接受键盘输入 5.2.2 响应鼠标 5.2.3 使用游戏杆交互 5.3 评估游戏的键盘输入 5.4 跟踪鼠标 5.5 向游戏引擎添加输入支持 5.5.1 添加键盘支持 5.5.2 添加鼠标支持 5.5.3 修改Bitmap类 5.6 开发UFO示例 5.6.1 编写程序代码 5.6.2 测试完成的程序 5.7 小结 5.8 亲身实践 第6章 示例游戏:Brainiac 6.1 游戏的玩法 6.2 设计游戏 6.3 开发游戏 6.4 测试游戏 6.5 小结 6.6 游戏大变身 第7章 使用游戏杆改进输入 7.1 了解游戏杆的基础知识 7.2 校准游戏杆 7.3 追踪游戏杆的移动 7.4 向游戏引擎添加游戏杆支持 7.4.1 访问Win32多媒体功能 7.4.2 开发游戏杆代码 7.5 开发UFO 2示例 7.5.1 编写程序代码 7.5.2 测试完成的程序 7.6 小结 7.7 亲身实践 第8章 示例游戏:Light Cycles 8.1 游戏的玩法 8.2 设计游戏 8.3 开发游戏 8.4 测试游戏 8.5 小结 8.6 游戏大变身 第3部分 在游戏中使用子画面 第9章 使用于画面动画移动对象 9.1 理解动画的基础知识 9.1.1 动画和帧频 9.1.2 了解计算机动画 9.2 2D动画与3D动画 9.3 理解2D动画的类型 9.3.1 基于帧的动画 9.3.2 基于形状的动画 9.4 将子画面动画应用于游戏 9.5 设计通用的子画面 9.6 创建Sprite类 9.6.1 创建和破坏子画面 9.6.2 更新子画面 9.6.3 绘制子画面 9.7 开发Planets示例程序 9.7.1 编写程序代码 9.7.2 测试完成的程序 9.8 小结 9.9 亲身实践 第10章 管理子画面 10.1 了解管理子画面的需求 10.2 设计子画面管理器 10.3 向游戏引擎添加子画面管理器 10.3.1 改进Sprite类 10.3.2 增强游戏引擎 10.4 使用双重缓存消除闪烁 10.5 开发Planets 2示例 10.5.1 编写程序代码 10.5.2 测试完成的程序 10.6 小结 10.7 游戏大变身 第11章 示例游戏:Henway 11.1 游戏的玩法 11.2 设计游戏 11.3 开发游戏 11.4 测试游戏 11.5 小结 11.6 游戏大变身 第4部分 使用声音和音乐 第12章 播放数字声音效果 12.1 理解数字声音 12.2 了解Windows波形声音 12.3 了解声音工具 12.3.1 Sony Sound Forge 12.3.2 Adobe Audition 12.3.3 廉价的声音编辑器 12.4 创建和编辑声音 12.5 查找声音和音乐 12.6 访问波形声音 12.7 播放波形声音 12.7.1 播放文件中的波形声音 12.7.2 播放作为资源的波形声音 12.7.3 循环播放波形声音 12.7.4 停止播放波形声音 12.8 开发Brainiac 2示例程序 12.8.1 编写程序代码 12.8.2 组合资源 12.8.3 测试完成的游戏 12.9 小结 12.10 亲身实践 第13章 播放MIDI音乐 13.1 感受MIDI音乐 13.2 理解Windows媒体控制接口 13.3 使用MCI播放MIDI音乐 13.3.1 打开MIDI设备 13.3.2 播放MIDI歌曲 13.3.3 暂停MIDI歌曲 13.3.4 关闭MIDI设备 13.4 向游戏引擎添加MIDI音乐支持 13.5 开发Henway 2示例程序 13.5.1 编写程序代码 13.5.2 测试完成的游戏 13.6 小结 13.7 亲身实践 第14章 示例游戏:Battle Office 14.1 游戏的玩法 14.2 设计游戏 14.3 开发游戏 14.4 测试游戏 14.5 小结 14.6 亲身实践 第5部分 高级动画 第15章 实现子画面外观动画 15.1 再次介绍帧动画 15.2 设计动画子画面 15.3 向游戏引擎添加动画子画面支持 15.3.1 只绘制位图的一部分 15.3.2 对Sprite类实现动画 15.4 开发Battle Office 2示例程序 15.4.1 编写程序代码 15.4.2 测试完成的游戏 15.5 小结 15.6 游戏大变身 第16章 创建子画面背景 16.1 了解游戏背景的重要性 16.2 了解游戏背景的类型 16.2.1 纯色背景 16.2.2 图像背景 16.2.3 动画背景 16.2.4 滚动背景 16.3 向游戏引擎添加背景支持 16.3.1 创建基本的背景类 16.3.2 创建动画背景类 16.4 开发Roids示例 16.4.1 编写程序代码 16.4.2 测试完成的游戏 16.5 小结 16.6 亲身实践 第17章 示例游戏:Meteor Defense 17.1 游戏的玩法 17.2 设计游戏 17.3 增强游戏引擎中的子画面 17.4 开发游戏 17.5 测试游戏 17.6 小结 17.7 游戏大变身 第6部分 让游戏拥有大脑 第18章 教游戏思考 18.1 理解人工智能 18.2 了解游戏AI的类型 18.2.1 漫游AI 18.2.2 行为AI 18.2.3 策略AI 18.3 开发AI策略 18.4 开发Roids 2示例程序 18.4.1 编写程序代码 18.4.2 测试完成的程序 18.5 小结 18.6 亲身实践 第19章 示例游戏:Space Out 19.1 游戏的玩法 19.2 设计游戏 19.3 向游戏引擎中添加另一个子画面特性 19.4 开发游戏 19.5 测试游戏 19.6 小结 第7部分 增添游戏的趣味性 第20章 使用闪屏增添游戏的活力 20.1 闪屏的重要性 20.2 了解闪屏 20.3 创建Space Out 2游戏 20.3.1 编写游戏代码 20.3.2 测试完成的游戏 20.4 小结 20.5 亲身实践 第21章 使用演示模式展示游戏 21.1 什么是演示模式 21.2 演示模式的细节 21.3 开发Space Out 3游戏 21.3.1 编写游戏代码 21.3.2 测试完成的游戏 21.4 小结 21.5 游戏大变身 第22章 记录高分 22.1 记录得分的重要性 22.2 确定高分数据模型 22.3 存储和检索高分数据 22.4 开发Space Out 4游戏 22.4.1 编写游戏代码 22.4.2 测试完成的游戏 22.5 小结 22.6 亲身实践 第8部分 附加练习 第23章 使用滚动背景更改远景 23.1 什么是滚动背景 23.1.1 横向滚动的背景 23.1.2 纵向滚动的背景 23.1.3 视差滚动背景 23.2 理解滚动背景的工作原理 23.3 向游戏引擎添加滚动背景支持 23.3.1 创建背景图层类 23.3.2 创建滚动背景类 23.4 开发Wanderer示例 23.4.1 编写程序代码 23.4.2 测试完成的程序 23.5 小结 23.6 游戏人变身 第24章 示例游戏:Stunt Jumper 24.1 游戏的玩法 24.2 设计游戏 24.3 开发游戏 24.4 测试游戏 24.5 小结 24.6 游戏大变身 24.7 亲身实践
### 回答1: 本章主要针对初学者,简要介绍了c/c++的基本语法和常见的编译错误。首先,介绍了程序的基本结构和常用的数据类型。c语言的基本语句包括赋值语句、条件语句和循环语句等,这些语句都可以组成程序的逻辑结构。接下来,介绍了函数的定义和调用,以及参数传递的方式。对于c++,还介绍了一些面向对象的概念,例如类、对象、成员函数等。同时,也提到了头文件和命名空间的使用方法。 在编程过程中,常常会出现各种编译错误,例如语法错误、类型不匹配、语义错误等,需要学会如何查看和解决这些错误。此外,还介绍了调试工具和各种常用的运算符和表达式,这些都是初学者必须掌握的基础知识。 总的来说,本章是关于c/c++快速入门的一篇简介性文章。虽然只是涉及到了基础的语法和知识点,但对于初学者而言是一个很好的起点。在学习过程中需要不断实践,积累经验,并不断深入了解更高级的编程技术和工具。 ### 回答2: C/C++是一种广泛使用的编程语言,它具有高效、灵活、可移植等特点,在各个领域得到广泛应用。C语言C++语言的基础,在学习C++之前,需要先掌握C语言的基础知识。 本文介绍的是C/C++教程中的第二章——快速入门C/C++。在这一章节中,我们将介绍C语言的基本语法、变量、运算符和流程控制语句等基础知识。以下是C语言的一些基本知识点。 C语言的基本语法: C语言程序由多个函数组成,其中一个函数必须命名为main(),程序从该函数开始执行。C程序中的语句以分号结束,注释使用“//”表示单行注释,“/* */”表示多行注释。 变量和数据类型: C语言中变量的定义格式为“数据类型 变量名”;数据类型包括基本类型和用户自定义类型。C语言中的基本类型有int类型、char类型、float类型和double类型等。其中,int类型表示整型,char类型表示字符型,float类型和double类型表示浮点型。 运算符: C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。例如,“+”表示加法运算符,“>=”表示大于等于运算符,“&&”表示逻辑与运算符。 流程控制语句: C语言中的流程控制语句包括if语句、switch语句、while语句、do-while语句和for语句等。这些语句可以根据条件执行相应的语句块。 总之,本章节的快速入门C/C++,具有基本语法、变量、运算符和流程控制语句等基础知识。初学者可以通过这些基础知识,轻松入门C/C++,为后续学习打下基础。同时,要注意编写代码的规范和逻辑性,才能更好的理解和使用C/C++语言。 ### 回答3: C语言是一门广泛使用的编程语言,具有高效、灵活、稳定等特点,被广泛应用于嵌入式系统、操作系统、驱动程序、多媒体应用等领域。学习C语言是程序员的必备技能之一。 第二章的快速入门C/C++教程,主要介绍了C/C++语言的基础知识,重点是程序的结构和输入输出。其中程序结构包括函数、语句、变量、表达式等,而输入输出则包括scanf、printf、getchar和putchar等函数。 # 程序结构 程序结构是指程序的基本构成单元,包括函数、语句、变量、表达式等。C语言中的程序结构主要包含以下几个方面。 ## 函数 C语言中,函数是程序的基本组成单元。一个C程序可以由一个或多个函数组成,每个函数可以完成一个任务。函数的格式如下: ```c 返回类型 函数名(参数1, 参数2, ...){ // 函数体 return 返回值; } ``` 其中,返回类型指函数执行后的返回值类型;函数名是由程序员定义的,用于调用函数时识别函数;参数列表是函数的输入参数,可以有多个参数,每个参数由类型和变量名组成;函数体是函数要执行的代码块;return语句可以返回函数的执行结果。 ## 语句 语句是完成特定功能的一组指令。C语言中的语句包括赋值语句、条件语句、循环语句等。C语言中通常使用花括号来表示语句块。例如,下面是一个if语句的例子。 ```c if(条件){ // if语句块 }else{ // else语句块 } ``` 如果条件为真,则执行if语句块中的代码;否则执行else语句块中的代码。 ## 变量 变量是用于存储数据的一种容器。在C语言中,一个变量包括变量名、类型和值。变量名由程序员定义,用于识别变量;类型指变量的数据类型,如整型、字符型、实型等;值是存储在变量中的数据。变量的定义格式如下。 ```c 数据类型 变量名 = 值; ``` 例如,下面是一个整型变量的定义。 ```c int num = 10; ``` ## 表达式 表达式是由变量、运算符和常量组成的一个具有返回值的语句。C语言中的运算符分为算术运算符、关系运算符、逻辑运算符等,例如加号、减号、乘号、除号等。下面是一个简单的表达式。 ```c a = 5 + 6 * 3 / 2 - 1; ``` 这个表达式将计算5加6乘3除以2减1的值,并将结果赋给a变量。 # 输入输出 输入输出是程序中非常重要的部分,可以让程序与用户进行交互。C语言中有多种输入输出函数,其中一些最常用的是scanf、printf、getchar和putchar函数。 ## scanf函数 scanf函数用于从标准输入读取格式化数据,并将读取的数据存储到变量中。它的格式如下。 ```c scanf("格式控制字符串", 变量列表); ``` 其中,格式控制字符串指示scanf函数需要读取的数据类型和格式,变量列表指向要读取的变量。下面是一个scanf函数的例子。 ```c int num; scanf("%d", &num); ``` 这个代码段将从标准输入读取一个整数,并将其存储到num变量中。 ## printf函数 printf函数用于将格式化数据输出到标准输出。它的格式如下。 ```c printf("格式控制字符串", 参数列表); ``` 其中,格式控制字符串指示printf函数需要输出的数据类型和格式,参数列表包含要输出的变量和常量。下面是一个printf函数的例子。 ```c int num = 5; printf("num的值是%d\n", num); ``` 这个代码段将输出“num的值是5”。 ## getchar和putchar函数 getchar函数用于从标准输入读取一个字符,putchar函数用于将一个字符输出到标准输出。它们的用法非常简单,例如下面的代码将读取一个字符并将其转换成大写字母后输出。 ```c char c = getchar(); putchar(toupper(c)); ``` 以上就是第二章中的快速入门C/C++教程的主要内容,包括程序结构和输入输出方面的基础知识。熟练掌握这些内容,对于学习C语言来说是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余识-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值