1 需求分析
1.1 功能需求
游戏性:通过键盘方向键的←、→、↑、↓来控制巧虎(船)的移动,躲避暗礁,碰撞宝物(特殊宝物),来增加积分,在倒计时结束前(到达终点前)争取得到更多分数。为提高可玩性,宝物(特殊宝物)、暗礁的初始位置、移动速度、出现频率是随机的,并可以由玩家来决定游戏难度,通常游戏越难,宝物和暗礁的个数越多,速度越快,频率越高。游戏中有倒计时显示,提示玩家游戏剩余时间。游戏结束后,若胜利(达到终点即倒计时结束),弹出排行榜、技术统计和对话框,询问是否增加难度继续挑战;若失败(积分为零),弹出排行榜和对话框,询问是否降低难度继续。
1.2 数据需求
程序应包含以下数据:
储存用户名的变量,储存倒计时的变量,储存暗礁和宝物(特殊宝物)位置坐标以及速度的结构体,及其动态数组,储存巧虎坐标的整型变量,作为计数器、临时存储的变量,显示字符的临时数组,放置外部图片的IMAGE类型变量,捕捉鼠标操作的MOUSEMSG类型变量。
1.3 界面需求
游戏面板:分为游戏区、按钮区和提示信息区。
游戏区包括游戏背景、巧虎、船、暗礁、宝物以及特殊宝物
按钮区包括开始按钮、暂停(继续)按钮、结束按钮、难度选择按钮
提示信息区包括倒计时提示、积分提示、用户名显示
1.4 开发与运行环境需求使用C语言结合Easyx库图形函数开发
开发环境Microsoft Visual C++ 6.0
运行环境:已测试Windows XP、Windows 7、Windows 8.1 系统可正常运行
1.5 其他方面需求倒计时显示
历史游戏记录
技术统计
特殊宝物类型(加速、清屏)
背景美化
2 概要设计
2.1 程序总体结构
程序整体结构:
游戏性能模块:主模块
游戏界面模块:包含void game()函数,用于绘制游戏界面
游戏操作模块:包含
void save(char *user, double *score);函数,用来保存游戏数据
int paihangbang();函数,用来制作游戏历史记录
int End();函数,用来在游戏失败/成功时结束本局游戏
角色模型模块:包含
// 巧虎模型
voidqiaohu(intx1,intx2,doubleJiFen);
voidqiaohuDel(intx1,intx2,doubleJiFen);
// 暗礁模型
voidanjiao(inta2,inti);
voidanjiaoDel(inta2,inti);
// 宝物模型
voidbaobei(intb2,intj);
voidbaobeiDel(intb2,intj);
// 加速球模型
voidspeedup(intb2,intj);
voidspeedupDel(intb2,intj);
// 清屏球模型
voidallkill(intb2,intj);
voidallkillDel(intb2,intj);
2.2 主要数据结构
本程序包含以下数据
2.2.1 基本数据类型控制游戏难度的整型变量lv
储存积分的变量JiFen
储存用户名的变量name
储存倒计时的变量countdown
储存暗礁和宝物(特殊宝物)的动态数组baowu[], anjiao[]
储存巧虎坐标的整型变量x1, x2
作为计数器、临时存储、类型转换的变量i, j, m, temp
2.2.2 Easyx库数据类型放置外部图片的IMAGE类型变量back, rule, Start
捕捉鼠标操作的MOUSEMSG类型变量mouse, Mouse, Mouse
2.2.3 自定义类型储存暗礁、宝物的坐标、速度信息的结构体BALL
3 详细设计voidgame();
voidsave(char*user,double*score);
intpaihangbang();
intEnd();
// 巧虎模型
voidqiaohu(intx1,intx2,doubleJiFen);
voidqiaohuDel(intx1,intx2,doubleJiFen);
// 暗礁模型
voidanjiao(inta2,inti);
voidanjiaoDel(inta2,inti);
// 宝物模型
voidbaobei(intb2,intj);
voidbaobeiDel(intb2,intj);
// 加速球模型
voidspeedup(intb2,intj);
voidspeedupDel(intb2,intj);
// 清屏球模
voidallkill(intb2,intj);
voidallkillDel(intb2,intj);
4 测试
4.1 正确运行程序的用例用户名可以输入任意字符,包括数字、字母、符号。例如用户名“test001:”
难度可以输入大于2的自然数,例如“5”
5.2 导致程序运行错误的用例难度输入“1”或“0”
5.3 边界数据的用例巧虎移动范围限定在“(0,0)~(700,500)的矩形范围之内”
5 用户手册应用程序功能的详细说明:本游戏为巧虎划船大冒险,通过键盘的←、→、↑、↓来控制巧虎(船)的移动,躲避暗礁,碰撞宝物(特殊宝物),来增加积分,在倒计时结束前(到达终点前)争取得到更多分数。
应用程序运行环境的要求:Windows xp/7/8.1系统下可运行
应用程序的安装与启动方法:“巧虎.exe”为程序启动文件,双击打开
程序的界面、交互方式和操作方法:右侧为菜单栏,通过鼠标左右键单击操作。左侧为游戏区,通过键盘方向键操作
输入数据类型、格式和内容限制:用户名无输入限制,难度需输入大于2 的自然数
6 总结提高
还有一些未完善的内容,比如排行榜的按分数排序、按用户名排序(当前只完成了按游戏时间排序),比如鼠标控制巧虎移动(目前使用键盘操作)。
6.1 课程设计总结
已完成的拓展功能有:
界面美化,结合Photoshop图层功能,使游戏界面在视觉上有较大改观
难度自定义,开局时输入难度,可以由用户来决定游戏难度,可玩性高
边界拦截,限制游戏中角色、道具的活动范围,无法穿越边界
倒计时显示,每毫秒更新一次时间显示,随时提醒用户当前游戏进程
完善交互细节,暂停时提醒用户当前状态,结束时询问是否增加/减少难度再来一次
历史记录,每次游戏结束前自动记录本局游戏的数据(用户名,积分,北京时间等),以文本形式储存到硬盘中。并在每次游戏后显示本次战绩,与历史玩家进行对比
将游戏运行所需的图片、文字、编码集成在exe文件中,无需加载其他文件即可进行游戏
6.2 对本课程意见与建议
C语言课程设计训练了我的实践能力,自学能力。希望这类课程能多多开设。巧虎划船大冒险这个题目对已学的C语言知识来说完成难度较大,老师建议我们采用Easyx图形函数库,来绘制图形界面,这些函数丰富了我对C语言的认识,体会到图形界面的乐趣,增强了学习兴趣。