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语言的认识,体会到图形界面的乐趣,增强了学习兴趣。

c语言文字冒险类游戏,课内资源 - 基于C语言和easyx实现的巧虎划船大冒险游戏...相关推荐

  1. c语言实现一元多项式的除法,课内资源 - 基于C++的一元多项式的计算

    1 问题描述 将多个多项式输入并存储在内存中,然后对多项式进行加.减运算并输出结果. 2 数据结构描述一元多项式的表示方式:如 f=6x^5-7x^4+3 表示为 f=6,5 -7,4 3,0 每个多 ...

  2. Java写文字冒险类游戏_用木兰语言编写文字冒险游戏(十三、四章),又一个特性发现...

    继续改写 Python 文字冒险游戏,第十三章的主要添加了玩家在每格的行动限制: func 选择命令(位置, 玩家) { 行动 = nil while !行动 { 可选行动 = 取可选行动(位置, 玩 ...

  3. 用c语言写扫雷游戏倒计时代码,课内资源 - 基于VS2013实现的扫雷小游戏

    1.任务概述 1.1 系统总体目标 本项目的目的在于开发一个扫雷软件,该软件面向游戏玩家用户,具有进行扫雷游戏的功能.游戏玩家将使用系统中的如下功能: 进行游戏 使用自定义游戏规格功能 使用计时器功能 ...

  4. c语言全民飞机游戏代码,课内资源 - 基于VC++和OpenCV实现的全民飞机大战游戏

    摘要功能:利用C++语言完成了一个小游戏项目-全民飞机大战,该游戏首先能够给用户提供注册,登录功能:提供了菜单栏及两种游戏模式,一种是无尽模式,另一种是一般模式:一般模式中用户通过控制玩家飞机攻击敌方 ...

  5. 文字冒险类游戏的制作

    1.首先我用的是橙光游戏制作网页 在橙光游戏官网就可以下到软件,注册账号后就可以做了. 打开软件 之后可以看看视频讲解挺详细的,不需要美术编程基础就可以做出自己的故事啦! 希望能为小伙伴们服务!arc ...

  6. devccp中c语言输入二维数组,课内资源

    1 概述1.1 项目简介本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是MFC编程中的一些函数.链表思 ...

  7. 餐厅管理程序c语言源代码,课内资源 - 基于C++的餐厅管理程序的设计与实现

    摘 要 随着计算机应用技术的快速发展和日益普及,网络也遍及到我们生活的每个角落,为我们的学习和工作带来极大的方便.很多人都使用过传统的文字,纸张管理手段,与之不同的另外一种管理方式就是利用电脑程序管理 ...

  8. 4维俄罗斯方块 java,课内资源 - 基于Easyx插件的俄罗斯方块游戏的设计与实现

    一 需求分析 1.1 设计内容: 设计一个俄罗斯方块游戏,根据实际游戏的规则完成设计. 游戏设计方案: 在一个图形绘制区域的正上方随机产生四种不同方块中的任意一种的初始位置,并使其向下运动 定义键盘, ...

  9. 基于linux下QT象棋,课内资源 - 基于QT实现的网络象棋游戏

    1.功能说明 1.1 初始界面 初始界面中包含一个菜单栏,菜单栏中有一个建立连接选项,可以用来与其他程序建立连接. 1.2 建立连接 单击建立连接后,会弹出一个对话框以配置连接的相关信息,包括创建服务 ...

最新文章

  1. 【python 8】python 装饰器
  2. 项目管理基础:系统评价相关知识
  3. [html] 写一个布局,它的宽度是不固定的100%,如果让它的宽度始终是高度的一半呢?
  4. 牛客 数学实验(模拟)
  5. FPGA设计时避免使用循环语句
  6. java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一,大厂 HR 如何面试
  7. :https web服务器ssl认证项目,Https自定义证书引入问题(2)
  8. tensorflow学习之常用函数总结:tensorflow.cast()函数
  9. Linux-设备驱动概述
  10. Java基础面试题(持续更新)
  11. 【工具】URLEncode
  12. FileLock——Java文件锁
  13. 调用Google翻译 语音接口
  14. 语c语言描写,语c动作描写
  15. 树莓派自定义游戏,Minecraft硬件编程,建造房屋,我的世界还可以这样玩
  16. (8)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接3
  17. 如何智慧的提问(个人笔记)
  18. 学以致用——Java源码——员工薪酬系统功能增强(Payroll System Modification)
  19. 北邮计算机专业的培养方案,现代邮政学院2016级专业培养方案-北京邮电大学.PDF...
  20. 足不出户买遍全球:亚马逊海外购启动史上最长“海外购物节”

热门文章

  1. JAVA 计算一个数的阶层
  2. 治疗“实火”引起的急性口腔溃疡及清新口气的方法
  3. u盘插上去计算机没有,正常U盘插入电脑没反应?u盘插上没反应的绝对有效解决方法-太平洋电脑网...
  4. 2018美团点评校招-K的倍数
  5. c 语言字符串查找替换,c ++ - 如何在标准字符串中搜索/查找和替换?
  6. java安卓登入界面代码_android项目——登录界面
  7. Apple的M1 MacBook Pro 与 2020年的Intel MacBook Pro速度对比测试
  8. C++面向对象学习之路(一)类与对象
  9. python取出数组大于某值_Python替换NumPy数组中大于某个值的所有元素实例
  10. Fire (poj 2152 树形dp)