计算机科学与技术毕业设计(论文)-藏族围棋的设计与实现.doc_第1页
计算机科学与技术毕业设计(论文)-藏族围棋的设计与实现.doc_第2页
计算机科学与技术毕业设计(论文)-藏族围棋的设计与实现.doc_第3页
计算机科学与技术毕业设计(论文)-藏族围棋的设计与实现.doc_第4页
计算机科学与技术毕业设计(论文)-藏族围棋的设计与实现.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

青海民族大学毕 业 论 文(设计)题 目: 藏族围棋软件的设计与实现 作 者: 毕业届期: 2011届 指导教师: 单 位: 青海民族大学计算机学院 专 业: 计算机科学与技术 2011年5月11日0摘 要本文对藏族围棋这个由传统棋类游戏与现代计算机技术想结合的产物进行研究讨论。综合讨论了藏族围棋的一些重要规则,走棋方式。及与计算机结合中产生的一些特殊功能及技术问题探讨。并着重对智能棋手的人工智能技术进行较为深入的研究,分析了藏族围棋游戏在人工智能方面取得的成就及不足。最后分析介绍了本藏族围棋软件的设计方案,具体实现方法,及提出重点难点分析,解决藏族围棋游戏的规则算法问题。关键词:围棋,藏族围棋, vb2005目 录第一章 概述.2 1.1选题意义.21.2藏族围棋的研究现状.21.3藏族围棋的历史.21.4民间藏族围棋与网络围棋软件的异同.3第二章 开发工具介绍2.1 visual b 介绍.4 2.2 visual basic 介绍.5第三章 藏族围棋软件的需求分析与总体设计.63.1 需求分析.6 3.2 总体设计.7第四章 藏族围棋软件的详细设计.8 4.1界面.84.2 界面的背景.94.3 规则.94.4 藏族围棋的棋盘.114.5藏族围棋的棋子及画法.13第五章 藏族围棋软件的夹棋的设计与实现 5.1 走子.85.2 吃子.95.3 夹子.95.4 剔.11第六章 结论及体会6.1 不足与改进.14 6.2 经验总结.6.3 开发体会.参考文献.致谢.青海民族大学学士学位论文 第一章 概述第一章 概述1. 1 选题意义以保护藏族围棋、发扬藏族围棋、传承藏族围棋的理念,在这种爱者甚微、知者无几的危机下及摆脱濒临失传的险境,就得必须有很好的保护办法,为此本人欲把藏族围棋这一历史悠久的民间棋艺实现在计算机上的同时保护棋谱及文化内涵等几方面的思路。1.2 藏族围棋的研究意义“密芒”和“久”构成了藏棋的完整体系,而藏族宗教崇尚白色的习俗一直保留至今,人们走棋时白子先行就是这一文化的明证。在遥远的年代,藏族人民把一种简单的黑白棋演绎出如此众多的行棋规则,这在世界上也是罕见的。“密芒”保留了中国古老围棋的12个座子,透露出远古的神秘信息;古老的“久”棋中则以摆放图形为决胜核心,这也是青海藏族棋艺中十分独特的一点,它的下法是不吃不叫不提,而是双方尽其所能摆出图形,图形有“枪”“靴”“褡裢”等,图形又分单、双两种,以双为重,这从另一个侧面反映出了古人类的某些思维特征和藏民族唯美主义的文化倾向。凡此种种均为研究中国围棋及竞技活动的发展提供了鲜活的史料,为深入研究中国棋艺的诞生和发展都是难能可贵、弥足珍贵的财富。1.3 藏族围棋的历史藏族围棋是藏民族的一种传统游戏方式,而以黑白子在纵横交错的棋盘上应对的盘上游戏多种,其中与中国传统的围棋形式最为接近的是在藏语中称为“密芒”的棋类游戏。“密芒”与中国传统围棋有着诸多的相似之处,“密芒”是藏族棋类游戏中历史最悠久的、最具影响的游戏种类,所以当之无愧地被人们称为“藏围棋”,除此之外藏民族中流传的“久”也与中国传统围棋相近似。在藏语中“密芒”的“密”为眼睛的意思,而“芒”则是众多之意,连起来就是多眼的战争之战,所以“密芒”又被称为“多眼棋”、 “多目之戏”,用来形容下棋时需要眼睛随时看着棋盘,也有在同时和几位棋手下棋时兼顾各方质疑。因为密芒与中国围棋有诸多相似之处,但又明显地与先进了解藏族围棋的相关情况,特别是对藏族围棋与中国围棋的关系等问题进行探索,这里从体育文化的角度对相关问题进行一些探讨。1.4 民间藏族围棋与藏族围棋软件的异同如今本小组开发的藏族网络围棋软件仅提供了 “双人模式”。因为“人机模式”对当今处于知者无几的危机下及摆脱濒临失传的险境的藏族围棋来说传播和传承能力相对于网络双人模式来说较小、虽然计算机按照事先编写好的算法程序来进行下棋;但开发“双人模式”的意义极其重大,两个人不单可以通过异地计算机之间来进行下棋,还可以交替使用同一台计算机来进行下棋。故而也叫藏族围棋软件。随着计算机网络的迅猛发展,异地计算机之间的通信变得十分便捷。这也为异地间的用户通过网络来进行下棋提供了可能。藏族围棋软件利用tcp/ip协议,在异地的玩家之间建立起tcp连接,并用它来交换棋局的各种数据信息。所以,网络藏族围棋棋软件在下棋以前必须要对相关的网络参数进行设置,才能实现玩家双方的成功连接。连接成功后,玩家双方轮流下棋,并将每一步下棋的信息通过网络传送给对方,使得双方棋盘上的棋子保持一致。与生活中的藏族围棋相同,藏族围棋软件也提供了“认输”、“和棋”和“悔棋”等功能。但这些功能的都是通过网络来实现的,所以,实现过程较生活中的要复杂。在胜负判别方面,民间围棋与藏族围棋软件并没有什么不同,只是网络版的玩家双方各自有一套胜负判别的程序。当一方玩家下一步棋后,他的胜负判别程序就执行一次,然后再将落子的信息传送给对方,对方的胜负判别程序也将执行一次。这样就完成一次胜负的判别过程。另外,藏族围棋软件的双方可能相距邀远,双方的语言交流没有单机版方便。所以,藏族围棋软件还必须提供聊天功能。青海民族大学学士学位论文 第三章 藏族围棋软件的需求分析与总体设计第二章 开发工具介绍2.1 visual basic.net 介绍visual basic.net 是从 visual basic 语言演变而来的,是一种为高效地生成类型安全和面向对象的应用程序而设计的语言。visual basic 允许开发人员开发面向 windows、web 和移动设备的程序。与所有面向 microsoft .net framework 的语言一样,使用 visual basic 编写的程序都具有安全性和语言互操作性方面的优点。这一代 visual basic 延续了为您提供一种简单快捷的方法来创建基于 .net framework 的应用程序的传统。vb.net的简介vb.net是微软最新平台技术,是.netframeworksdk的一种语言。vb.net和vc#.net在功能上没有区别。编译以后生成的可执行文件被称为assembly,即程序集。vb.net的版本号是visualbasic7.0,它的运行是建立在clr(commonlanguageruntime)和msil(microsoftintermediatelanguage)虚拟器上的。其实,它的机制和java差不多。vb.net的特点 1.真正成为面向对象以及支持继承性的语言。2.窗体设计器支持可视化继承,并且包含了许多新的特性,比如自动改变窗体大小、资源本地化支持、数据类工具内在支持xml数据。3.直接建立在.net的框架结构上,因此开发人员可以充分利用所有.net平台特性,也可以与其他的.net语言交互。4.为windows应用程序提供了xcopy部署,开发者不再需要为dll的版本问题担忧。vb.net的语言特点: 1.代码托管。被托管的代码享受.netframework提供的安全保障和垃圾回收机制,但是这也同时表明,你的程序被框在framework里面了。api变得不太方便。2.强大的面向对象特性。现在vb7已经是一个完全的面向对象程序。现在vb7已经支持类的各种特性:继承,函数的覆盖,重载,虚拟,隐藏3.功能强大,程序界面更标准。4.程序代码结构化更强,开发环境舒适体贴。vb.net常常被人称为vb7.0即对vb6的升级是不对的,几乎在.net中的思想已经完全改变了,vb6中是基于事件和对象的思想,而在.net中由于使用了.net框架,并且ms为了将新的编译环境与潮流接轨,面对对象在.net中尤为突出,用过6的朋友们都很清楚,在6中过程的思想还能运用,但是在.net中过程的思想已经完全的被oop的思想取代了。也许这样说你也不太明白,我用一句话来解释,就是vb6及其以前的产品是dos时代到windows可视化时代的一个转变,vb.net是为建造基于因特网的分布式计算的新时代的解决方案提供基础构造的一个转变。因此,对于目前的仍比较普遍的win32环境来讲vb.net并没有比vb6有什么进步。2.2 visual basic 介绍visual basic(vb)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,vb都是世界上使用人数最多的语言不仅是盛赞vb的开发者还是抱怨vb的开发者的数量。它源自于basic编程语言。vb拥有图形用户界面(gui)和快速应用程序开发(rad)系统,可以轻易的使用dao、rdo、ado连接数据库,或者轻松的创建activex控件。程序员可以轻松的使用vb提供的组件快速建立一个应用程序。vb的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。 vb的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。 vb使用参数计算的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组建的出现,程序员可以选用自己需要的扩展库。和有些语言不一样,vb对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。 第三章 藏族围棋软件的需求分析与总体设计3.1 需求分析软件的需求分析是软件生存期中重要的一步,也是决定性的一步。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。在此阶段,了解用户要求本软件必须满足的所有功能和限制,以及用户对软件功能和性能的要求,弄清用户想要软件“做什么”,准确地表达用户的要求。功能需求能通过网络进行下棋符合藏族围棋的基本规则提供“认输”、“和棋”、“悔棋”等功能提供水平坐标和垂直坐标功能提供玩家之间的聊天功能有背景音乐提供多种背景环境需求10/10mbps共享式hub一台装有windows95/98/nt/xp操作系统的计算机两台计算机的cpu不低于pii450,内存不小于64m10/10mbps自适应网卡每台计算机各一块,sb兼容声卡各一块,5类双绞线若干米每台计算机都应配置有tcp/ip协议用户接口需求界面友好、亲切接口简洁、不花哨操作接口直观、不繁琐异常处理需求当埠号冲突时,错误提示并可重新输入当出现错误行列时,此次操作无效如果网络非正常断开,则终止此局3.2 总体设计在需求分析结束后,已经弄清楚了软件的各种需求,较好地解决了用户要软件“做什么”的问题,接下来就将着手实现软件的需求,即要着手解决“怎么做”的问题。在这个阶段着重实现需求的程序模块设计问题,并将需求转化为软件的系统结构,进行模块的划分,确定每个模块的功能、接口及模块之间的调用关系。根据需求分析制订出整个软件的系统结构图,如图2.1所示:图2-1系统结构图青海民族大学学士学位论文 第四章 藏族围棋软件的详细设计4.1 界面根据用户对接口的需求,接口被设计得十分简洁,并没有作过多的修饰。如图3-1所示:4.2 更换背景4.3 规则第(1)条:藏族围棋围棋的下法: 对局双方各执一色棋子。 空枰开局。 白先黑后,交替着一子于棋盘的点上。 棋子下完后,可向其他点移动。 第(3)条:藏族围棋的夹法夹在自己的棋子与棋子之间有对方的棋子则成为自己的棋子(新棋)。同理刚下的新棋与原有的棋子间被夹的对方棋子都称为自己的棋子。第(4)条:藏族围棋的打抢法纵横线或斜线上的任意“头”上有对方的棋子,但在这一线上其余的所有点上有自己的棋子则将对方的棋子成为自己的棋子,这称为“打枪” ,“打枪”分为“短枪”、“长枪”等第(5)条:藏族围棋的走棋法除棋盘中央的“路口”外的所有点被棋满完,才开始走棋,最初下棋的一方先行走棋。第(6)条:让路 如任意一方将对方的“路口”被封则重新给对方让路,在让路是可进行夹棋,但不许故意将对方的路口的封死。第(7)条:计算胜负及终局 一方将对方的全部棋子夹完时,为终局。 一方无棋子可走时,游戏结束,棋多者胜。 对局中有一方中途认输时,为终局。4.4藏族围棋的棋盘常见棋盘有三种,棋盘中心点称为首府。 五横五竖的横纵线交叉,另有东南-西北向、西南-东北向的斜线各七条,组成共四十一个棋点。七横七竖的横纵线交叉,另有东南-西北向、西南-东北向的斜线各十一条,组成共八十五个棋点。九横九竖的横纵线交叉,另有东南-西北向、西南-东北向的斜线各十五条,组成共一百四十五个棋点。双方棋子数等于全部棋点数,以两色区分敌我。本款软件的棋盘由纵横各条等距离、垂直交叉的平行线加各格子的对角线构成。形成41个交叉点。 棋盘整体形状以及每个格子纵、横向相等且由对角线连起来。 在棋盘边上标有三个小圆点各依次称为头、肩子等,中央的星又称“路口”,见下图1. 图表 1 棋盘格子矢量图 4.5藏族围棋的棋子及画法 棋子 棋子分黑白两色。 旗子的画法:根据情况的不同,棋子的种类共有以下四种:顶角坐标计算:要想在棋盘的正确位置上画出棋子,首先确定棋子所在的顶角坐标。从图中我们不难找规律。棋盘左上角的棋子的顶角坐标一旦确定,那么其它位置上的棋子的顶角坐标也将很容易的求得。例如:34-9=25,可见,相差为棋盘横纵线的间距。所以,可以得到这样一个顶角坐标公式:(i - 1) * 25 + 9;(j - 1) * 25 + 9棋子边缘的清除:从棋子图中我们看到,棋子的四周都有边框。如下图中的阴影部分:这些边框在游戏中是我们不想见到的,所以,必须将其清除掉。首先,使用paintpicture,让棋子图中的mask与棋盘待放棋子处进行“与”操作 form1.picture1.paintpicture form1.picture2.picture, (i - 1) * 25 + 9, (j - 1) * 25 + 9, 25, 25, 100, 0, 25, 25, vbsrcand然后,再使用paintpicture,让棋子图中的棋子与棋盘待放棋子处进行“或”操作 form1.picture1.paintpicture form1.picture2.picture, (i - 1) * 25 + 9, (j - 1) * 25 + 9, 25, 25, (map(i, j, 1) - 1) * 25, 0, 25, 25, vbsrcpaint旗篓的画法:棋篓的画法与旗子画法相同,只是顶角的坐标不同而已。它的顶角坐标无需计算,只是要在背景图片上测量出来即可。第五章 藏族围棋软件的夹棋的设计与实现5.1走子(1).轮流移动一枚己棋,沿线一步。 (2)代码public sub go(byval x0 as int16, byval y0 as int16, byval x1 as int16, byval y1 as int16) dim change as xx dim i as int16 if isruler(x0, y0, x1, y1) and chess(x0, y0).direct(0).self = 2 and chess(x1, y1).direct(0).self 2 then change.value = chess(x0, y0).direct(0).self msgbox(isruler(x0, y0, x1, y1) stack.enqueue(change) end if end sub5.2吃子(1).无论是下子或走子阶段,只要己方棋子排成以下两种排列就把该一枚敌子提出交回对手,并在该棋位补放一枚己子。如果新补的棋子又造成吃子,则继续反复。 (2)代码while stack.count 0 change = stack.dequeue() for i = 1 to 4 flag = false if chess(change.x, change.y).direct(i).self -1 and chess(change.x, change.y).direct(0).self 2 and change.value -1 and change.value 2 then dim h1, h2 as int16 h1 = chess(change.x, change.y).direct(i).x h2 = chess(change.x, change.y).direct(i).y if (chess(h1, h2).direct(i).self -1) and (chess(h1, h2).direct(0).self 2) and (chess(h1, h2).direct(0).self = (change.value + 1) mod 2) then dim hh1, hh2 as int16 hh1 = chess(h1, h2).direct(i).x hh2 = chess(h1, h2).direct(i).y end if end if if chess(change.x, change.y).direct(i + 4).self -1 and chess(change.x, change.y).direct(0).self 2 and change.value -1 and change.value 2 then dim b1, b2 as int16 b1 = chess(change.x, change.y).direct(i + 4).x b2 = chess(change.x, change.y).direct(i + 4).y msgbox(change.x & uu & change.y) msgbox(200) if (chess(b1, b2).direct(i + 4).self -1 and chess(b1, b2).direct(0).self 2) and (chess(b1, b2).direct(0).self = (change.value + 1) mod 2) then stack.enqueue(y) flag = true if i 4 then end if exit for end if end if end if5.3夹(1).造成两枚己棋在一条直或斜线上夹住一枚敌棋。5.4剔(1).造成一条直或斜线除端点有一枚敌棋外,其余均属己棋。第六章 结论及体会6.1 不足与改进本软件和其它藏族围棋软件相比在功能和性能还是存在着比较大的差距的,例如:只有知道主机的ip地址和端口号才能建立连接、第三方不能加入棋局等等。要想设计出更完善的藏族围棋软件,仍然需要做大量的工作:服务器的设置。在网络中将一台计算机设置成为服务器,服务器的ip地址和端口号是固定不变的,客户机可以直接连接到服务器上,然后通过服务器选择对手,这样就省去了玩家在游戏前必须知道主机的ip地址和端口号的麻烦了。接口需要进一步美化。增加改变字体颜色以及背景颜色功能,增加按钮闪烁功能等。提高通信的可靠性。在一般情况下,藏族围棋软件可以稳定的工作,但是仍不能保证它在任何情况下都不出错,一旦在网络传输过程中,由于某种原因造成数据丢失,将造成双方数据不一致,使游戏无法继续进行下去。因此,因该改善程序的可靠性。扩充功能。增加记录棋谱功能,以供藏族围棋爱好者能在日后研究。6.2 经验总结藏族围棋软件的开发让我经历了一次前所未有的体验,让我真正体会到了“书到用时方恨少”的含义,体会到了厚积薄发的意义所在,这次的开发是对自己所学的知识的一次大考验,也是对自己潜能的一次挖掘。现在把一些开发的经验总结如下:在工程开发中,系统的分析是整个开发的核心,只有前期进行很好的分析、规划,才能做出好的软件产品,这个阶段要进行很好的策划,精密的分析。尤其是流程的设计,直接关系到系统功能和编码的成败。良好的程序设计风格很重要。这在一个比较大的工程中,程序设计的风格非常重要,这影响到软件的测试以及后期功能扩展,在增量型的开发模型中,混乱的代码会使维护变的十分困难。在多人合作团队开发的时候,你的代码要影响到全局,所以会有“你的代码是写给别人看”的观点的存在。运用高效的测试手段。测试要占开发很大的时间,软件编码以后,并非总能百分百的成功,那就要进行测试。在大程序中,多写异常处理的代码,以及变量合法的检验等,debug中混合使用断点测试以及报告函数(messagebox),以提高debug效率。善于捕捉最新的技术资料。在每个软件开发过程中,数据是必不可少的,虽然书本上有比较系统的数据,但是真正能运用的还是不多。在开发时,不要急于设计编码,应该学会先查找软件开发中涉及到的各种最新数据,学习他们关于本系统的一些开发经验。学会在编码前,吸取别人的代码的一些优点,然后改进设计,使之更加的完善。6.3 开发体会软件的开发是十分辛苦的工作,尤其是一个人

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论