目录
第1章C语言游戏开发快速入门
1.1弹跳的小球
1.1.1显示静止的小球
1.1.2小球下落
<p>目录</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p><span style="font-family: 宋体;">第</span>1<span style="font-family: 宋体;">章</span><span style="font-family: Calibri;">C</span><span style="font-family: 宋体;">语言游戏开发快速入门</span></p> <p> </p> <p>1.1<span style="font-family: 宋体;">弹跳的小球</span></p> <p> </p> <p>1.1.1<span style="font-family: 宋体;">显示静止的小球</span></p> <p> </p> <p>1.1.2<span style="font-family: 宋体;">小球下落</span></p> <p> </p> <p>1.1.3<span style="font-family: 宋体;">上下弹跳的小球</span></p> <p> </p> <p>1.1.4<span style="font-family: 宋体;">斜着弹跳的小球</span></p> <p> </p> <p>1.1.5<span style="font-family: 宋体;">控制小球弹跳的速度</span></p> <p> </p> <p>1.1.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>1.2<span style="font-family: 宋体;">*简单的飞机游戏</span></p> <p> </p> <p>1.2.1scanf<span style="font-family: 宋体;">控制飞机移动</span></p> <p> </p> <p>1.2.2getch<span style="font-family: 宋体;">控制飞机移动</span></p> <p> </p> <p>1.2.3<span style="font-family: 宋体;">显示复杂的飞机图案</span></p> <p> </p> <p>1.2.4<span style="font-family: 宋体;">发射激光</span></p> <p> </p> <p>1.2.5<span style="font-family: 宋体;">打靶练习</span></p> <p> </p> <p>1.2.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>1.3<span style="font-family: 宋体;">程序调试方法</span></p> <p> </p> <p>1.3.1<span style="font-family: 宋体;">语法错误</span></p> <p> </p> <p>1.3.2<span style="font-family: 宋体;">逻辑错误</span></p> <p> </p> <p>1.3.3<span style="font-family: 宋体;">常用技巧</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>2<span style="font-family: 宋体;">章函数封装的游戏开发</span></p> <p> </p> <p>2.1<span style="font-family: 宋体;">飞机游戏</span></p> <p> </p> <p>2.1.1<span style="font-family: 宋体;">代码重构</span></p> <p> </p> <p>2.1.2<span style="font-family: 宋体;">新式子弹</span></p> <p> </p> <p>2.1.3<span style="font-family: 宋体;">静止的敌机</span></p> <p> </p> <p>2.1.4<span style="font-family: 宋体;">敌机移动</span></p> <p> </p> <p>2.1.5<span style="font-family: 宋体;">击中敌机</span></p> <p> </p> <p>2.1.6<span style="font-family: 宋体;">清屏功能</span></p> <p> </p> <p>2.1.7<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>2.2<span style="font-family: 宋体;">用函数实现反弹球消砖块</span></p> <p> </p> <p>2.2.1<span style="font-family: 宋体;">代码重构</span></p> <p> </p> <p>2.2.2<span style="font-family: 宋体;">显示边框</span></p> <p> </p> <p>2.2.3<span style="font-family: 宋体;">显示移动挡板</span></p> <p> </p> <p>2.2.4<span style="font-family: 宋体;">反弹小球</span></p> <p> </p> <p>2.2.5<span style="font-family: 宋体;">消砖块</span></p> <p> </p> <p>2.2.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>2.3flappy bird</p> <p> </p> <p>2.3.1<span style="font-family: 宋体;">下落的小鸟</span></p> <p> </p> <p>2.3.2<span style="font-family: 宋体;">显示小鸟和障碍物</span></p> <p> </p> <p>2.3.3<span style="font-family: 宋体;">让障碍物移动</span></p> <p> </p> <p>2.3.4<span style="font-family: 宋体;">判断是否碰撞</span></p> <p> </p> <p>2.3.5<span style="font-family: 宋体;">障碍物循环出现</span></p> <p> </p> <p>2.3.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>3<span style="font-family: 宋体;">章应用数组的游戏开发</span></p> <p> </p> <p>3.1<span style="font-family: 宋体;">生命游戏</span></p> <p> </p> <p>3.1.1<span style="font-family: 宋体;">游戏的初始化</span></p> <p> </p> <p>3.1.2<span style="font-family: 宋体;">繁衍或死亡</span></p> <p> </p> <p>3.1.3<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>3.2<span style="font-family: 宋体;">用数组实现反弹球消砖块</span></p> <p> </p> <p>3.2.1<span style="font-family: 宋体;">反弹球</span></p> <p> </p> <p>3.2.2<span style="font-family: 宋体;">增加挡板</span></p> <p> </p> <p>3.2.3<span style="font-family: 宋体;">消砖块</span></p> <p> </p> <p>3.2.4<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>3.3<span style="font-family: 宋体;">空战游戏</span></p> <p> </p> <p>3.3.1<span style="font-family: 宋体;">飞机的显示与控制</span></p> <p> </p> <p>3.3.2<span style="font-family: 宋体;">发射子弹</span></p> <p> </p> <p>3.3.3<span style="font-family: 宋体;">击中敌机</span></p> <p> </p> <p>3.3.4<span style="font-family: 宋体;">多台敌机</span></p> <p> </p> <p>3.3.5<span style="font-family: 宋体;">发射散弹</span></p> <p> </p> <p>3.3.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>3.4<span style="font-family: 宋体;">贪吃蛇</span></p> <p> </p> <p>3.4.1<span style="font-family: 宋体;">构造小蛇</span></p> <p> </p> <p>3.4.2<span style="font-family: 宋体;">小蛇的移动</span></p> <p> </p> <p>3.4.3<span style="font-family: 宋体;">玩家控制小蛇移动</span></p> <p> </p> <p>3.4.4<span style="font-family: 宋体;">判断游戏失败</span></p> <p> </p> <p>3.4.5<span style="font-family: 宋体;">吃食物增加长度</span></p> <p> </p> <p>3.4.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>3.5<span style="font-family: 宋体;">版本管理与团队协作</span></p> <p> </p> <p>3.5.1SVN<span style="font-family: 宋体;">简介</span></p> <p> </p> <p>3.5.2<span style="font-family: 宋体;">开发实践</span></p> <p> </p> <p>3.5.3<span style="font-family: 宋体;">小结</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>4<span style="font-family: 宋体;">章简单绘图游戏的开发</span></p> <p> </p> <p>4.1EasyX<span style="font-family: 宋体;">快速入门</span></p> <p> </p> <p>4.1.1EasyX<span style="font-family: 宋体;">的介绍与安装</span></p> <p> </p> <p>4.1.2<span style="font-family: 宋体;">简易绘图</span></p> <p> </p> <p>4.1.3<span style="font-family: 宋体;">简单动画</span></p> <p> </p> <p>4.1.4<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>4.2<span style="font-family: 宋体;">多球反弹</span></p> <p> </p> <p>4.2.1<span style="font-family: 宋体;">多个反弹球和墙壁碰撞</span></p> <p> </p> <p>4.2.2<span style="font-family: 宋体;">反弹球之间相互碰撞</span></p> <p> </p> <p>4.2.3<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>4.3<span style="font-family: 宋体;">实时钟表</span></p> <p> </p> <p>4.3.1<span style="font-family: 宋体;">绘制静态秒针</span></p> <p> </p> <p>4.3.2<span style="font-family: 宋体;">秒针的转动</span></p> <p> </p> <p>4.3.3<span style="font-family: 宋体;">根据实际时间转动</span></p> <p> </p> <p>4.3.4<span style="font-family: 宋体;">添加时针和分针</span></p> <p> </p> <p>4.3.5<span style="font-family: 宋体;">添加表盘刻度</span></p> <p> </p> <p>4.3.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>4.4<span style="font-family: 宋体;">结合游戏开发框架和</span><span style="font-family: Calibri;">EasyX</span><span style="font-family: 宋体;">绘图实现反弹球消砖块</span></p> <p> </p> <p>4.4.1<span style="font-family: 宋体;">游戏框架代码的重构</span></p> <p> </p> <p>4.4.2<span style="font-family: 宋体;">绘制静态挡板</span></p> <p> </p> <p>4.4.3<span style="font-family: 宋体;">控制挡板接球</span></p> <p> </p> <p>4.4.4<span style="font-family: 宋体;">消砖块</span></p> <p> </p> <p>4.4.5<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>4.5<span style="font-family: 宋体;">鼠标交互</span></p> <p> </p> <p>4.5.1<span style="font-family: 宋体;">鼠标交互基础</span></p> <p> </p> <p>4.5.2<span style="font-family: 宋体;">用鼠标控制挡板移动</span></p> <p> </p> <p>4.5.3<span style="font-family: 宋体;">按鼠标左键初始化小球位置</span></p> <p> </p> <p>4.5.4<span style="font-family: 宋体;">小结</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>5<span style="font-family: 宋体;">章应用图片与声音素材的游戏开发</span></p> <p> </p> <p>5.1<span style="font-family: 宋体;">使用图片与声音</span></p> <p> </p> <p>5.1.1<span style="font-family: 宋体;">图片的导入与使用</span></p> <p> </p> <p>5.1.2<span style="font-family: 宋体;">遮罩图的使用</span></p> <p> </p> <p>5.1.3flappy bird<span style="font-family: 宋体;">初步</span></p> <p> </p> <p>5.1.4<span style="font-family: 宋体;">声音的导入与使用</span></p> <p> </p> <p>5.1.5<span style="font-family: 宋体;">带音效的</span><span style="font-family: Calibri;">flappy bird</span></p> <p> </p> <p>5.1.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>5.2<span style="font-family: 宋体;">飞机大战</span></p> <p> </p> <p>5.2.1<span style="font-family: 宋体;">用鼠标控制飞机移动</span></p> <p> </p> <p>5.2.2<span style="font-family: 宋体;">发射子弹</span></p> <p> </p> <p>5.2.3<span style="font-family: 宋体;">增加敌机</span></p> <p> </p> <p>5.2.4<span style="font-family: 宋体;">判断胜败</span></p> <p> </p> <p>5.2.5<span style="font-family: 宋体;">增加音效</span></p> <p> </p> <p>5.2.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>5.3<span style="font-family: 宋体;">复杂动画效果</span></p> <p> </p> <p>5.3.1<span style="font-family: 宋体;">小人原地行走</span></p> <p> </p> <p>5.3.2<span style="font-family: 宋体;">控制小人移动</span></p> <p> </p> <p>5.3.3<span style="font-family: 宋体;">构建动态地图</span></p> <p> </p> <p>5.3.4<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>5.4<span style="font-family: 宋体;">双人游戏</span></p> <p> </p> <p>5.4.1<span style="font-family: 宋体;">双人输入的问题</span></p> <p> </p> <p>5.4.2<span style="font-family: 宋体;">异步输入函数</span></p> <p> </p> <p>5.4.3<span style="font-family: 宋体;">双人反弹球</span></p> <p> </p> <p>5.4.4<span style="font-family: 宋体;">小结</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>6<span style="font-family: 宋体;">章其他语法知识在游戏开发中的应用</span></p> <p> </p> <p>6.1<span style="font-family: 宋体;">指针</span></p> <p> </p> <p>6.1.1<span style="font-family: 宋体;">减少不必要的全局变量</span></p> <p> </p> <p>6.1.2<span style="font-family: 宋体;">动态二维数组</span></p> <p> </p> <p>6.1.3<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>6.2<span style="font-family: 宋体;">字符串</span></p> <p> </p> <p>6.2.1<span style="font-family: 宋体;">得分的转换与输出</span></p> <p> </p> <p>6.2.2<span style="font-family: 宋体;">音乐播放函数的封装</span></p> <p> </p> <p>6.2.3<span style="font-family: 宋体;">静态字符阵列的创建</span></p> <p> </p> <p>6.2.4<span style="font-family: 宋体;">一场字符雨</span></p> <p> </p> <p>6.2.5<span style="font-family: 宋体;">字符雨动画</span></p> <p> </p> <p>6.2.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>6.3<span style="font-family: 宋体;">结构体</span></p> <p> </p> <p>6.3.1<span style="font-family: 宋体;">静止小球的初始化与显示</span></p> <p> </p> <p>6.3.2<span style="font-family: 宋体;">小球的运动与反弹</span></p> <p> </p> <p>6.3.3<span style="font-family: 宋体;">小球运动的规范化</span></p> <p> </p> <p>6.3.4<span style="font-family: 宋体;">鼠标的吸引力</span></p> <p> </p> <p>6.3.5<span style="font-family: 宋体;">鼠标的击打斥力</span></p> <p> </p> <p>6.3.6<span style="font-family: 宋体;">鼠标的扰动力</span></p> <p> </p> <p>6.3.7<span style="font-family: 宋体;">**延时</span></p> <p> </p> <p>6.3.8<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>6.4<span style="font-family: 宋体;">文件</span></p> <p> </p> <p>6.4.1<span style="font-family: 宋体;">工作目录的设定</span></p> <p> </p> <p>6.4.2<span style="font-family: 宋体;">多画面显示</span></p> <p> </p> <p>6.4.3<span style="font-family: 宋体;">游戏的读档和存档</span></p> <p> </p> <p>6.4.4<span style="font-family: 宋体;">小结</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>7<span style="font-family: 宋体;">章游戏化学习</span><span style="font-family: Calibri;">C</span><span style="font-family: 宋体;">语言的知识难点</span></p> <p> </p> <p>7.1<span style="font-family: 宋体;">递归</span></p> <p> </p> <p>7.1.1<span style="font-family: 宋体;">传统汉诺塔</span></p> <p> </p> <p>7.1.2<span style="font-family: 宋体;">可视化汉诺塔</span></p> <p> </p> <p>7.1.3<span style="font-family: 宋体;">小结</span></p> <p> </p> <p>7.2<span style="font-family: 宋体;">链表</span></p> <p> </p> <p>7.2.1<span style="font-family: 宋体;">单个结点数据结构的定义</span></p> <p> </p> <p>7.2.2<span style="font-family: 宋体;">两个结点的串联</span></p> <p> </p> <p>7.2.3<span style="font-family: 宋体;">多个结点的初始化</span></p> <p> </p> <p>7.2.4<span style="font-family: 宋体;">链表的输出</span></p> <p> </p> <p>7.2.5<span style="font-family: 宋体;">删除结点</span></p> <p> </p> <p>7.2.6<span style="font-family: 宋体;">小结</span></p> <p> </p> <p><span style="font-family: 宋体;">第</span>8<span style="font-family: 宋体;">章游戏开发实践案例</span></p> <p> </p> <p>8.1<span style="font-family: 宋体;">挖地小子</span></p> <p> </p> <p>8.1.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.1.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.2<span style="font-family: 宋体;">台球</span></p> <p> </p> <p>8.2.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.2.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.3<span style="font-family: 宋体;">太鼓达人</span></p> <p> </p> <p>8.3.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.3.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.4<span style="font-family: 宋体;">扫雷</span></p> <p> </p> <p>8.4.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.4.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.5<span style="font-family: 宋体;">蓝色药水</span></p> <p> </p> <p>8.5.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.5.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.6Rings</p> <p> </p> <p>8.6.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.6.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.7<span style="font-family: 宋体;">猪小弟</span></p> <p> </p> <p>8.7.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.7.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.8<span style="font-family: 宋体;">俄罗斯方块</span></p> <p> </p> <p>8.8.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.8.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.9<span style="font-family: 宋体;">通天魔塔</span></p> <p> </p> <p>8.9.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.9.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.101010</p> <p> </p> <p>8.10.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.10.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.11<span style="font-family: 宋体;">炸弹人</span></p> <p> </p> <p>8.11.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.11.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.12<span style="font-family: 宋体;">口袋妖怪</span></p> <p> </p> <p>8.12.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.12.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.13<span style="font-family: 宋体;">大鱼吃小鱼</span></p> <p> </p> <p>8.13.1<span style="font-family: 宋体;">主体功能描述</span></p> <p> </p> <p>8.13.2<span style="font-family: 宋体;">主要实现步骤</span></p> <p> </p> <p>8.14<span style="font-family: 宋体;">小结</span></p> <p> </p> <p> </p>显示全部信息前 言
前言
<br />前言<br /><br /><br />C语言是一门重要的基础课程,应用广泛,也是不少后续课程的基础。然而,由于C语言的语法规则较多,在实际编程时又相对灵活,很多初学者接触这门课程会觉得有难度,普遍有畏惧心理。目前的配套教材一般偏向于对语法规则的介绍,实例偏数学算法,过于抽象,趣味性不强,学生不愿写程序,进而觉得入门困难。针对这些问题,本书把游戏开发实践应用于C语言课程设计教学,培养学生对编程的兴趣。为了达到这一目的,本书应用C语言的语法知识带领同学从无到有地开发游戏,通过游戏案例逐步应用学到的语法知识,在实际编程中加深体会。在课程设计中尽量站在初学者的角度,降低开发游戏的难度,不超出所学知识范围,逐步提高读者对编程的兴趣和能力。美国**教育家杜威曾说过: “大多数的人,只知道对五官接触的、能够实用的东西才有趣味,书本上的趣味是没有的。”同样对于C语言这门课程,让学生看到用C语言可以编出很好玩的程序,学生感到有趣、有成就感,就会自己花时间钻研,师生积极互动,教学效果也因此得到改进。本书的授课方法已在实际教学中验证,同学们对编程产生了浓厚的兴趣,能够主动学习,大一学生普遍能写出数千行代码的复杂游戏,编程能力显著提升。对应效果请参看“\随书资源\第8章\2016级计科新生C语言游戏制作视频.flv”。各章的主要内容如下: 第1章,学习printf、scanf、if…else、while、for语句后进行弹跳的小球、飞机游戏的开发,并介绍程序调试的方法与技巧。第2章,学习函数后,利用函数封装及标准的游戏框架进行飞机游戏、反弹球消砖块、flappy bird的开发。第3章,学习数组后,利用数组改进数据结构,实现生命游戏、反弹球消砖块、空战游戏、贪吃蛇的开发,并介绍SVN代码管理工具。第4章,学习简单的绘图工具,并进行多球反弹、实时钟表、反弹球消砖块、鼠标交互的学习开发。第5章,学习图片与音乐素材的导入和使用,并进行flappy bird、飞机大战、行走的小人、双人反弹球的学习开发。第6章,利用后续语法知识进一步改进游戏程序,如指针创建动态数组、字符串控制得分显示、结构体改进数据结构、文件用于游戏存档等,实现《黑客帝国》中的字符雨动画、互动粒子仿真、具有多界面和存档功能的飞机大战游戏。第7章,利用游戏化学习的思路学习C语言的两个知识难点——递归与链表。第8章,介绍多个游戏开发实践案例,包括挖地小子、台球、太鼓达人、扫雷、蓝色药水、Rings、猪小弟、俄罗斯方块、通天魔塔、1010、炸弹人、口袋妖怪、大鱼吃小鱼,对每个案例均讲解了主体功能、实现思路,并提供分步骤源代码的下载。编者2017年5月显示全部信息媒体评论评论免费在线读第3章应用数组的游戏开发
空战游戏中能否有10台敌机、反弹球消砖块中能否有30个待消除砖块、flappy bird中能否有5个柱子同时出现?在学习数组之前以上目标是很难实现的。本章利用数组的知识进一步改进游戏,实现更复杂的效果。在前两章的基础上,学习本章前需要掌握的新语法知识: 数组的定义、数组作为函数的参数。3.1生 命 游 戏
假设有int Cells[50][50],即有50×50个小格子,每个小格子里面生命存活(值为1)或者死亡(值为0),通过把所有元素的生命状态输出可以显示出相应的图案。通过这个例子可以体会二维数组在游戏开发中的应用,实现所有数据的存储,并将画面显示、数据更新的代码分离,便于程序的维护和更新。本节游戏的*终代码参看“\随书资源\第3章\3.1生命游戏.cpp”,效果如图31所示。
图31生命游戏效果
3.1.1游戏的初始化**步利用第2章的游戏框架进行初始化,输出静态的生命状态,如图32所示。二维数组int cells[High][Width]记录所有位置细胞的存活状态,值为1表示生、值为0表示死。