深入体验C 语言项目开发
薛小龙
清华大学出版社 2011 07
本丛书的主要编写人员有陈强、李佐彬、李淑芳、蒋凯、
王梦、王书鹏、张子言、张建敏、陈德春、李藏、关立勋、
秦雪薇、薛多鸯、李强、刘海洋、唐凯、吴善财、王石磊、
习国庆、张家春、扶松柏、杨靖字、王东华、罗红仙、曹文
龙、胡郁、孙宇、于洋、李冬艳、代林峰、谭贞军、张玲玲、
朱桂英、徐璐、徐娜子。
深入体验C 语言项目开发
深入体验Java 项目开发
深入体验Java Web 项目开发
深入体验vc++项目开发
深入体验ASP.NET 项目开发
深入体验PHP 项目开发
深入体验C#项目开发
第1 章 俄罗斯方块游戏
第2 章 成绩管理系统
第3 章 PING 和TCP 网络系统
第4 章 工资管理系统
第5 章 绘图板系统
第6 章 文本编辑器系统
第7 章 图书借阅系统
第8 章 UDP 传输系统
第9 章 推箱子游戏
第10 章 媒体播放器
第 1 章 俄罗斯方块游戏
1.1 第一个项目
老师给我们布置了一个暑期作业:用 C 语言实现俄罗斯方块游戏(提示用 graphics.h 实
现) ,并提醒务必做好前期的分析工作。我专门到网上下载了一个,并试玩了几分钟,其基
本结构如图 1-2 所示。
功能分析:分析整个系统所需要的功能;
模块结构规划:规划系统中所需要的功能模块;
总体设计:分析系统处理流程,探索系统核心模块的运作;
数据结构:设计系统中需要的数据结构;
规划函数:预先规划系统中需要的功能函数;
具体编码:编写系统的具体实现代码。
很多工具可以实现C 程序开发, Turbo C 用graphics.h 实现比较方便。
Turbo C,DEV-C++ ,这两个是轻量级的开发工具,适合初学者。
Visual C、Visual C++6.0
Visual Studio.NET ,适合大型程序。
历时两天,我确定好了整个项目的功能模块,做好了整体规划,也选好了开发工具。接
下来我将要步入总体设计阶段。
1.2 系统需求分析
1) 游戏方块的预览功能
当游戏运行后并在底部出现一个游戏方块时,必须在预览界面中出现下一个方块,这样
便于玩家提前进行控制处理。因为在该游戏中共有 19 种方块,所以在方块预览区内要显示
随机生成的游戏方块。
2) 游戏方块的控制功能
游戏玩家可以对出现的方块进行移动处理,分别实现左移、右移、快速下移、自由下落
和行满自动消除功能的效果。
3) 更新游戏显示
当在游戏中移动方块时,需要先消除先前的游戏方块,然后在新坐标位置重新绘制新方块。
4) 游戏速度设置和分数更新
通过游戏分数能够实现对行数的划分,例如,可以设置消除完整的一行为10 分。当达
到一定数量后,需要给游戏者进行等级上的升级。当玩家级别升高后,方块的下落速度将加
快,从而游戏的难度就相应地提高了。
5) 系统帮助
游戏玩家进入游戏系统后,通过帮助了解游戏的操作提示。
一个俄罗斯方块游戏的基本功能也就上述5 条了,当然现实中的游戏产品更加复杂,但
其基本的功能都是大同小异的。
1.3 总体设计
经过总体构成功能的分析后,接下来就可以根据各构成功能模块进行对应的总体设计处
理。主要包括两个方面:运行流程分析;核心处理模块分析。
1.3.1 运行流程分析
在闲暇之余,整个俄罗斯方块游戏我已经玩了多遍了。根据总结的模块功能和规划的结
构图,我绘出了整个游戏的运作流程图。如图1-4 所示,用左移VK_LEFT 、右移VK_RIGHT 、
下移VK_DOWN 、旋转VK_UP 和退出VK_Esc 键判断键值。上述几个按键移动处理的具体
说明如下。
VK_LEFT :调用MoveAble( ) 函数,判断是否能左移,如果可以则调用EraseBox 函数,清
除当前的游戏方块。并在下一步调用show_box( ) 函数,在左移位置显示当前游戏的方块。
VK_RIGHT :右移处理,与上面的VK_LEFT 处理类似。
VK_DOWN :下移处理,如果不能再移,必须将flag_newbox 标志设置为 1。
VK_UP :旋转处理,首先判断旋转动作是否执行,在此需要满足多个条件,如果不合条件,
则不予执行。
VK_Esc :按