- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
23文字角色扮演游戏的冒险地图设计23文字角色扮演游戏的冒险地图设计
河北工业大学计算机软件技术基础(VC)
课程设计任务书
题目:文字角色扮演游戏的冒险地图设计
目的与要求
目的C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计,并对Windows平台下的控制台进行深入的了解。基本要求
要求用C++设计方法和基本原理
例如上图就是两种类型的地图设计,左边的地图是遵从物理世界规律的地图设计,任何两个地图之间的通路都是双向的;而右边的地图则突破了物理世界的限制,例如从0号房间向南走到1号房间,从1号房间继续向南则走回到了0号房间产生了一条永无止境的道路,在不受物理条件的限制下,每条通路都变成了单向,从而构建各种或诡异或神秘的地图。图中双框的房间是终点。本题目要求设计能够支持右侧地图的程序,即通路都是单向的。
房间的设计
通过对地图的描述,我们能够推断出一个房间所应该具有的属性。
首先房间应该有一个内部编号以便和其他房间区别开,另外房间还应该有个简要的名字,在文字冒险游戏中我们无法用图形来表示房间的情况,所以要有用来描述房间的信息。
此外,每个房间应该有四个出口分别存放该房间通往那些房间,同时这些出口也可以是封死的,即显示出口是不显示该方向,例如某房间只有“north”和“south”方向通向其他房间,则只显示
最后,房间还要有用来标识是否终点的属性。综上所述房间是一个属性的集合体,应该设计结构体来存放一个房间的所有属性,用结构体数组来存放整个地图。
指令系统的设计
要能够使程序能够区分各种不同的命令,只需要读取用户输入的字符串,然后和支持的命令进行比较即可,例如当处于前面所说的那个只有“north”和“south”两个出口的房间时,则只支持north和south两个命令,若处于拥有“west”出口的房间时则只有west命令生效,将用户带入“west”方向的房间。若用户输入的命令不属于生效的命令,则要求用户重新输入命令。
此外当到达被设置为终点的房间时,程序应该结束。
主要技术问题的描述
控制台(Console)是一个基于字符界面的交互平台。Windows里面自带的控制台同样也是一个基于字符界面的交互平台。我们本学期实验所编写的程序都是基于控制台的C++程序。
在默认设置下,Windows的控制台能够显示25行80列的字符,我们可以把控制台看作是一个有25行80列的一个矩阵,每个矩阵的元素能够显示一个标准的ASCII字符(汉字需要两个元素来显示)。
控制台的颜色控制
控制台中的每个元素可以使用独立的前景色和背景色。在Windows的控制台中可以使用的颜色有16种,见下图:
上图中的颜色编码自左至右依次是0至15,0为黑色,15为白色。前景色和背景色都只有这16种颜色。
控制台颜色的控制时机
因为控制台不能更改已经输出字符的颜色设置,所以要想更改输出的字符的颜色设置,必须在输出之前更改控制台的颜色配置。
要改变控制台的颜色设置需要调用两个Windows操作系统的API函数。GetStdHandle函数用来获得当前控制台的句柄,用SetConsoleTextAttribute函数来改变选中控制台的颜色控制。这两个函数的声明存在于windows.h文件中。可以将这两个调用封装到SetColor函数中:
例如:如果需要改变当前的控制台输出颜色为白底红字,则可以书写如下代码:
这段代码就可以输出白底红字的“Hello World”字符串了。
cout的缓冲区刷新
cout对象默认情况下并不会将用户的输出送到控制台,而是暂时存在输出缓冲区里面,而控制台的颜色控制只在向控制台输出的时候才生效。所以只有强制刷新输出缓冲区的时候颜色设置才会生效。例如我们要输出两个字符A,第一个是白底红字,第二个是红底白字,那么下面的代码:
输出的将是两个红底白字的字符“A”。因为虽然输出第一个“A”之前把控制台设置为白底红字,但是此时并没有把第一个“A”输出到控制台,而只是存放于输出缓冲区里面。然后控制台的颜色被设置为红底白字,然后输出“A”。最终程序结束的时候自动强制刷新控制台,把输出缓冲区里面的两个字符“A”都发送给控制台,因为此时的控制台颜色是红底白字,所以两个“A”都被显示为红底白字。
为了强制刷新控制台,可以使用endl和flush两个操作符,endl表示先换行然后强制刷新,flush表示直接强制刷新而不换行,所以上面的代码只要在每个cout语句的最后加上“ flush”就可以把输出两个不同颜色配置的字符“A”了(参看下面的代码)。
随机函数
随机函数名为rand(),使用时必须包含头文件stdlib.h。
创新要求:
1. 颜色控制,不同内容的输出颜色不一样。
2. 设计
文档评论(0)