- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
八皇后问题课程设计
八皇后问题课程设计 1设计背景 1.1课程设计的目的 本课程设计的目的在于提高学生对数据结构和C++语言课程的运用能力,并能使学生加深对数据结构和编程工作的理解。书本知识转化成个人能力,最终还是要靠不断地付诸实践,课程设计恰为这种时间提供了一个很好的平台。 1.2课程设计任务与要求 程序启动后显示一张8*8的棋盘,然后游戏者可以用坐标输入方式在棋盘上布下棋子。如果布下的棋子合法,则增加10分并可以继承布下一个棋子。如果布下的棋子不合法,给出游戏者的得分数。 若无错误布下8颗棋子,则给与满分100分。(由于本学期我们尚未学习图形界面的有关类容,所以课程设计中的有关图形界面的内容进行了修改。) 游戏规则要求不能在同一行或同一列或同一条对角线上放置二个或二个以上的棋子,但每行都必须放置一个棋子。 2 程序的实现过程 2.1设计思想、算法及实现要点 程序编写都是由简单到复杂的,接到任务以后,就在脑子里有了一个大概的框架。一个while(1)的打循环里嵌套一个界面输入程序,通过用户不断地输入来控制游戏的循环的继续和跳出,并且在设计一个自动跳出的判断语句。这样,玩家就能在循环体里不断布棋,直到玩家想终止游戏或者游戏过关成功。 关于下棋系统,首先要处理的就是棋盘,我把棋盘用赋值为0或1的二维数组来模拟国际象棋棋盘。 0代表无棋子,1代表已下的棋子。这样就比较方便我以后判断棋盘横竖斜有且只有一个棋子,只需将横竖斜的元素累加,结果等于1即可。 由于没有真正的图形界面,下棋的方法就只能依靠用户输入横竖坐标了,输入坐标后,系统自动将该坐标位置的元素赋值为1。 关于打分细则,我的设计是给一个基准分20分,正确下一个棋就加10分,这样,当游戏过关时恰好是100分。 具体到实际编程时,又考虑到,游戏程序的可玩性问题,我又在之前的的简单框架上补充了悔棋的功能,并且能一次性悔多步棋子,这样,打分细则又改变了: 起评分20分下对一颗棋子奖励10分,若要悔棋,悔棋一步扣除15分。由于栈的特点是先进后出,后进先出,正好符合后下的棋子先悔,先下的棋后悔,于是我就很自然的想到建立一个简单栈来存储每一步玩家所走的棋子。栈的内容很简单,只有压入和弹出的函数,没有过多防范数组越界、溢出等错误的处理。出错问题由程序员负责。 剩下的就简单了,用一个int类型的数记录悔棋次数,评分系统就做好了。 2.2 程序的函数 程序主要有这几个函数构成void display()用来输出模拟的八皇后8*8棋盘; void display(int ,int)这是对上一个函数的重载,这样就允许先将一个特定位置的元素赋值为1,然后在输出;bool deal()对棋盘进行横、竖、斜等方面的处理,将棋盘的横、竖、斜三条线上元素求和,当这些和里面有值大于1时,说明至少有一对换后发生冲突,此时返回false,反之则返回true; void Main()是整个游戏的核心函数,里面设计了一个while(k),k是走棋的个数,所以k0,该循环通常情况下无法终止,所以提示用户下棋的页面会一直循环出现,知道玩家成功闯关或者玩家提示想终止程序。 2.3系统测试 系统测试的阶段我主要做的就是进行错误处理的工作,比如: 如果玩家输入了不存在的错误坐标,系统会提示:“坐标错误!请您输入1~8整数。”然后系统会让玩家更改输入坐标,如果输入了如重复的坐标,系统将会提示:“输入坐标重复,请重新输入。”直到玩家输入正确的坐标位置;在悔棋的时候,如果输入的悔棋步数超过当前步数,系统也会提示用户正确输入。并且各种提示信息都伴随一个喇叭发音,引起玩家注意。 为了使界面看起来更加简洁,每一次更新棋盘元素并输出棋盘之前,我都用了一个system(“CLS”);的语句,使得整个游戏过程不会很撩人。 3 操作说明 整个游戏操作,用户只需用数字键输入棋子的坐标或悔棋的步数,以及用N/Y键判断是否悔棋。输入错误数据都会有系统伴随喇叭发音的提示,N/Y键也对大小写进行了处理。玩家可以很轻松的进行游戏,不必担心错误的输入造成整个游戏系统的崩溃。 4 总 结 通过这一个星期的编程,觉得自己对于对数据结构和C++的编程运用能力有了很大的提高,不仅对堆栈有了切身的体会,了解了它的方便与麻烦之处,也同时把C++语言重新温习了一遍,巩固了上学期所学的知识。 这次课程设计更令我意识到了数据结构这一课程的重要性,一个好的算法可依然程序更加简单明了高效,试想如果是在上个学期然我们来编写相同的程序,估计那程序可以想象会有多么的凌乱无序低效。 参考文献 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社.1997:44-58 H.M
您可能关注的文档
最近下载
- 读后续写+小猫Phin+的生命转机+导学案+湖北省华中师范大学第一附属中学2024-2025学年高二下学期5月联考英语试题.docx
- 《普通动物学》全套教学课件.pdf
- 公司薪酬改革方案.ppt VIP
- 某市道路照明工程施工组织设计方案说明书45页.doc VIP
- MOONS鸣志SR3-Mini步进电机驱动器用户手册.pdf VIP
- 2025山西地质集团秋季校园招聘600人笔试参考题库附答案解析.docx VIP
- 北师大版数学二年上册《回家路上》教学设计.docx VIP
- 2025年北欧神话测试题及答案.doc VIP
- (新版)二级造价工程师《建设工程计量与计价实务》(水利工程)考试题库(含答案).docx VIP
- 学前教育考研课件.ppt VIP
有哪些信誉好的足球投注网站
文档评论(0)