23文字角色扮演游戏的冒险地图设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河北工业大学计算机软件技术基础(VC)
课程设计任务书
一、题目:文字角色扮演游戏的冒险地图设计
二、目的与要求
1.目的
通过编写该程序,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计,并对Windows平台下的控制台进行深入的了解。
2.基本要求
(1)要求用C++语言编程,在Visual C++环境下调试完成;
(2)要求划分功能模块,各个功能分别使用函数来完成;
(3)源代码程序要求必要的注释。
三、设计方法和基本原理
1.课题功能描述
大部分的游戏设计中都会有地图的概念,本程序要求设计一个简单的地图,并且可以通过输入命令来选择前进的方向。
程序执行效果如下:
整个地图由若干个房间构成,每个房间都可以通过出口链接到其他房间,所以要输出该房间能够
继续前进的方向,如上图中有些房间有1个出口,而有些房间有3个出口。
用户通过输入“east”、“west”、“south”或“north”来前往其他房间,若该房间的对应方向没有连接到其他房间或用户输入的命令不属于上述命令则继续询问用户想要前进的方向。
当用户到达作为终点的房间后游戏结束。
2.地图的设计
例如上图就是两种类型的地图设计,左边的地图是遵从物理世界规律的地图设计,任何两个地图之间的通路都是双向的;而右边的地图则突破了物理世界的限制,例如从0号房间向南走到1号房间,从1号房间继续向南则走回到了0号房间产生了一条永无止境的道路,在不受物理条件的限制下,每条通路都变成了单向,从而构建各种或诡异或神秘的地图。
图中双框的房间是终点。
本题目要求设计
能够支持右侧地图的程序,即通路都是单向的。
3.房间的设计
通过对地图的描述,我们能够推断出一个房间所应该具有的属性。
首先房间应该有一个内部编号以便和其他房间区别开,另外房间还应该有个简要的名字,在文字冒险游戏中我们无法用图形来表示房间的情况,所以要有用来描述房间的信息。
此外,每个房间应该有四个出口分别存放该房间通往那些房间,同时这些出口也可以是封死的,即显示出口是不显示该方向,例如某房间只有“north”和“south”方向通向其他房间,则只显示
最后,房间还要有用来标识是否终点的属性。
综上所述房间是一个属性的集合体,应该设计结构体来存放一个房间的所有属性,用结构体数组来存放整个地图。
4.指令系统的设计
要能够使程序能够区分各种不同的命令,只需要读取用户输入的字符串,然后和支持的命令进行比较即可,例如当处于前面所说的那个只有“north”和“south”两个出口的房间时,则只支持north 和south两个命令,若处于拥有“west”出口的房间时则只有west命令生效,将用户带入“west”
方向的房间。
若用户输入的命令不属于生效的命令,则要求用户重新输入命令。
此外当到达被设置为终点的房间时,程序应该结束。
四、主要技术问题的描述
本题目基本要求中没有对颜色控制的要求,下面的颜色控制相关内容属于创新内容中需要的一些基础知识。
1.控制台的基本概念
控制台(Console)是一个基于字符界面的交互平台。
Windows里面自带的控制台同样也是一个基于字符界面的交互平台。
我们本学期实验所编写的程序都是基于控制台的C++程序。
在默认设置下,Windows的控制台能够显示25行80列的字符,我们可以把控制台看作是一个有25行80列的一个矩阵,每个矩阵的元素能够显示一个标准的ASCII字符(汉字需要两个元素来显示)。
2.控制台的颜色控制
控制台中的每个元素可以使用独立的前景色和背景色。
在Windows的控制台中可以使用的颜色有16种,见下图:
上图中的颜色编码自左至右依次是0至15,0为黑色,15为白色。
前景色和背景色都只有这16种颜色。
3.控制台颜色的控制时机
因为控制台不能更改已经输出字符的颜色设置,所以要想更改输出的字符的颜色设置,必须在输出之前更改控制台的颜色配置。
要改变控制台的颜色设置需要调用两个Windows操作系统的API函数。
GetStdHandle函数用来获得当前控制台的句柄,用SetConsoleTextAttribute函数来改变选中控制台的颜色控制。
这两个函数的声明存在于<windows.h>文件中。
可以将这两个调用封装到SetColor函数中:
例如:如果需要改变当前的控制台输出颜色为白底红字,则可以书写如下代码:
这段代码就可以输出白底红字的“Hello World”字符串了。
4.cout的缓冲区刷新
cout对象默认情况下并不会将用户的输出送到控制台,而是暂时存在输出缓冲区里面,而控制台的颜色控制只在向控制台输出的时候才生效。
所以只有强制刷新输出缓冲区的时候颜色设置才会生效。
例如我们要输出两个字符A,第一个是白底红字,第二个是红底白字,那么下面的代码:
输出的将是两个红底白字的字符“A”。
因为虽然输出第一个“A”之前把控制台设置为白底红字,但是此时并没有把第一个“A”输出到控制台,而只是存放于输出缓冲区里面。
然后控制台的颜色被设置为红底白字,然后输出“A”。
最终程序结束的时候自动强制刷新控制台,把输出缓冲区里面的两个字符“A”都发送给控制台,因为此时的控制台颜色是红底白字,所以两个“A”都被显示为红底白字。
为了强制刷新控制台,可以使用endl和flush两个操作符,endl表示先换行然后强制刷新,flush 表示直接强制刷新而不换行,所以上面的代码只要在每个cout语句的最后加上“<< flush”就可以把输出两个不同颜色配置的字符“A”了(参看下面的代码)。
5.随机函数
随机函数名为rand(),使用时必须包含头文件stdlib.h。
五、创新要求
在基本要求达到后,进行创新设计:
1. 颜色控制,不同内容的输出颜色不一样。
2. 设计宝箱系统,宝箱分为两类:真宝箱和假宝箱,每个房间可以有真宝箱、假宝箱或没有宝
箱。
只有在地图中打开过真宝箱之后,到达终点房间游戏才能结束。
六、课程设计的考核方式及评分方法
1.考核方式
(1)学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h 头文件放到一个文件夹里上传到所对应班级的学生名称相应文件夹中。
(2)课程设计结束时,在机房当场验收。
教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。
2.评分方法
根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。
七、书写设计报告的要求(详细内容见“设计报告模板”)
八、课程设计的有关文档“设计报告模板”和“课程设计要求”请在下载任务书处下载。
#include <iostream.h>
#include <windows.h>
void Setcolor(unsigned short ForeColor=7,unsigned short BackGroundColor=0)
{
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,ForeColor+BackGroundColor*0x10);
}
void main()
{
//12(red) is the color of foreground.
//14(yellow) is the color of bakeground.
Setcolor(1,14);
cout<<"Hello World"<<endl;
}。