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