本书作者特别针对游戏程序所需要的思维与技术,结合本身经验将这些零散的资料整理成书,希望能对游戏开发的入门者有所帮助。本书以Visual C++结合MFC、DirectDraw、DirectSound等技术,从制作游戏雏形开始由浅入深地进行解说,并介绍图形的特效处理。书中针对RPG、卡片游戏、多媒体等主题分别做重点说明,并介绍如何把MCI、WAVE、DirectSound等音源音效整合到游戏中,以及DirectSound的图形高速化处理的技巧。最后两个章节讲座游戏的资料存储与管理,对想要学习游戏制作的读者提供了极佳的参考。
Chapter 1 制作基本雏型
利用MFC建立视窗
◇建立固定尺寸的视窗
建立雏型
使用windows API
◇更改样式
更改显示区的外框
让按钮和调整视窗大小无效
设定视窗大小
改变视窗的位置
View的修改
执行范例
全屏幕显示
◇全屏幕显示①
Fullscreen成员函数
RecalcLayout成员函数
◇全屏幕显示②
切换分辨率
类化(包装;wrapping)
读入CG并显示
◇点阵图(Bitmap Image)
DIBSecfion
制作DIBSection用的类
◇显示BMP文件
Loadlmage API
取得图片的信息
◇读入压缩的CG文件
图片数据的压缩
PNG
读文件用的函数
图片文件的储存
◇储存BMP文件
◇储存PNG文件
◇更改图片的格式
Chapter 2追加各种处理
显示窗口
◇多窗口
建立有标题栏的窗口
◇非矩形窗口
◇制作窗口区域①
◇设定窗口区域
◇制作窗口区域②
CG的重叠
◇重叠的思考逻辑
●24位图片的重叠
画面特效①
●通过复制制作的画面特效①——转景(Wipe)
定期的处理
特效开始
转入(wipe-in)/转出(wipe-out)
实例的执行
◇通过复制制作的画面特效②——转景(不同样式)
使用多媒体计时器
●通过复制制作的画面特效③——卷动(Scroll)
绘图处理
卷动的处理(步骤1)
卷动大张的图片
◇通过计算制作的画面特效——淡化(Fade)
淡化的计算
画面特效②(使用Windows的功能)
◇矩形以外的特效
操作图片用的API
裁剪(CliPPing)
◇使用区域的转景
区域(Region)
圆形的转景
星形的转景
时钟式的转景
复数个星形的转景
多个圆形的转景
建立区域的步骤(复习)
使用放大/缩小的转景切换CG
◇交互转景(Cross Wipe)
●交互淡化(Cross Fade)
◇高速的淡化(使用MMX)
MMX指令集
MMX处理
闲置进程(Idle process)
动画(眨眼)
●动画的结构
●眨眼
动画处理
动作的改善
Chapter 3 RPG
显示地图
◇使用图片显示地图
●显示地图(使用零件)
角色的移动
◇管理角色和障碍物
CSprite类
CMapSprite类
CChaLracter类
CMMapManager类
◇登录角色
登录玩家的角色
登录敌方角色、障碍物
◇搜索可移动的范围
判断是否可以移动
设定不可以移动的区域
●角色的移动
决定移动的路程
角色移动的动画
执行实例
战斗
◇思考程序
执行实例
◇搜索可攻击的范围
●攻击
●CPU端的行动
敌方角色的移动
敌方角色的攻击
显示俯瞰的地图
●坐标的转换
◇地图零件
◇角色的重叠
●地图大小
Chapter 4卡片游戏
制作卡片
◇制作扑克牌
扑克牌的外框
上下颠倒文字的画法
描绘图案
洗牌
◇打散牌的方法
将牌重新放回牌堆
牌的移动
◇拖曳移动
拖曳的基本操作
检查是否为卡片所在的区域
鼠标移动时的处理
按键放开时的处理
取消的处理
●动画的移动
执行实例
Chapter 5多媒体
多媒体API
●使用多媒体API
新增加入函数库
前置码
●MCI
MCI基本的操作
●播放CD
设定时间
取得音轨的长度
播放
播放完毕时的通知
执行实例
CD Audio类
●拥有多台CD-ROM的时候
●播放MIDI
MIDI的优缺点
播放MIDI
重复播放
执行实例
◇播放WAVE
PlaySound API
使用MCI播放
使用DirectSound
◇DirectSound的特征
◇使用DirectSound的方法
读取WAVE文件
DirectSound的初始化
建立声音缓冲区
环状缓冲区
播放
DirectSound播放完毕时的通知
线程的结束
◇多线程
使用DirectSound播放BGM
Chapter 6 DirectDraw
使用:DirectDraw加速显示
◇使用DirectDraw的“雏形”
MainFrm.h
MainFrm.cpp
执行实例
CG的重叠
◇建立绘图页
制作绘图页类
管理绘图页
修改应用程序类
执行实例
淡化
◇使用DirectDraw的淡化
锁定绘图页
◇直接存取内存实现的淡化
执行实例
反而变得很慢的情形
◇高速淡化
执行实例
程序代码的改良
◇程序代码的详细功能
CDirectDraw类
Chapter 7 存储数据
存储功能
◇支持多用户的环境
◇将数据存储在注册表里
注册表项
存取注册表
存储在文件里的原因
◇存储在用户各自的文件夹里
取得文件夹
◇支持Windows NT/2000
数据加密
◇让玩家看不到数据的方法
建立二进制文件
数据加密
◇加密的方法
Chapter 8 数据管理
STL的数据管理
◇STL的结构
数组
双向链表
二叉树
◇使用STL的判断基准