本科毕业论文:基于C#的五子棋毕业论文.doc

上传人:啊飒飒 文档编号:10358954 上传时间:2021-05-11 格式:DOC 页数:26 大小:130KB
返回 下载 相关 举报
本科毕业论文:基于C#的五子棋毕业论文.doc_第1页
第1页 / 共26页
本科毕业论文:基于C#的五子棋毕业论文.doc_第2页
第2页 / 共26页
本科毕业论文:基于C#的五子棋毕业论文.doc_第3页
第3页 / 共26页
本科毕业论文:基于C#的五子棋毕业论文.doc_第4页
第4页 / 共26页
本科毕业论文:基于C#的五子棋毕业论文.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《本科毕业论文:基于C#的五子棋毕业论文.doc》由会员分享,可在线阅读,更多相关《本科毕业论文:基于C#的五子棋毕业论文.doc(26页珍藏版)》请在三一文库上搜索。

1、本科毕业论文:基于C#的五子棋毕业论文 毕业设计(论文)题 目基于C#的五子棋游戏的设计与开发 系 别 软件与服务外包学院专 业 软件技术(游戏设计) 班 级 * 学生姓名*学 号 * 指导教师 * 2012年 4月基于C#的五子棋游戏的设计与开发摘要:随着人们的生活节奏的变快,游戏已经成为人们生活中不可缺少的一部分,它不仅能使人娱乐,放松人们的心情,也能够开发人的智力。所以说休闲游戏的开发将会是大势所趋,本文主要是通过对五子棋游戏的开发来提高自己的编程能力。 五子棋游戏是一种简单大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,现在流行的五子棋游戏软件大多缺乏美观的界面,和容易的操作方

2、法,电脑的AI值也不是很高。本文通过C#语言在计算机图形方面的编程,设计了五子棋游戏软件,使该软件具有美观友好的截面,在人机对弈时,使电脑具有较高的智商。本游戏是以C#语言作为开发工具,采用搜索算法设计最优落子点开发的游戏软件。本文详细地介绍了五子棋游戏软件设计的全过程,描述了该软件的功能,以及和其它五子棋程序的一些比较。 关键词:五子棋、C#语言、软件Based on the C # Gobang Development and DesignAbstract:With the faster pace of life, the game has become an indispensable

3、part of life, which not only makes fun, relax the mood, but also to the development of human intelligence. So the development of casual games will be the trend, this paper is on the development of Gobang to improve their programming skills. Gobang game is a simple and popular game, since the compute

4、r to achieve, by the love of computer players, but now most popular game soft gobang lack aesthetic interface, and easy method of operation, the value of the computer AI is not high. The adoption of the C# programming language in computer graphics, designed gobang game software to enable the softwar

5、e with a beautiful and friendly interface in both game, the computer has a higher IQ. The game is based on C# language, using searching algorrithm to design best gobang. The detailed presentation of the whole process of gobang game software design, describes the software functions and procedures and

6、 other gobang other gobang some more. Key Words:Gobang、C# language、Software目录前言1第一章 需求分析2 1.1本课题研究的意义2 1.2五子棋发展史2 1.3五子棋特点及规则2 1.4五子棋常用术语3 1.5五子棋攻防4 1.6开发工具选择5 1.7 C#编程语言的介绍6 1.8 C#编程语言的特点6 1.9 Visual Studio 软件简介7 1.9.1简介7 1.9.2 Visual Studio 2005的特点7第二章 系统分析9 2.1系统调研及可行性分析9 2.1.1 系统调研9 2.1.2 可行性分析9

7、 2.1.3 技术可行性分析10 2.2设计分析10 2.2.1游戏运行说明11 2.2.2游戏规则11 2.2.3游戏操作12 2.3游戏玩法13 2.4主要模块分析14 2.4.1下棋类的实现14 2.4.2游戏输赢判断类16 2.4.3悔棋类的实现18第三章 运行测试20第四章 总结部分22致谢22参考文献24 前言 五子棋是人们喜欢的一种棋类游戏,近来,随着计算机的快速发展,以计算机作为对战平台,各种棋类游戏如雨后春笋般纷纷冒出,使得那些喜爱下棋,有常常苦于没有对手的棋迷们能随时过足棋瘾,而且这类软件个个水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军?卡斯帕罗夫的“深蓝”

8、便是最具说服力的代表。 当我们与电脑对战对时,您知道这些软件是怎样像人脑一样进行思考的吗?总的来说(我们假定您熟悉五子棋的基本规则),要让电脑知道该在哪一点下子,就要根据盘面的形式,为每一可能落子点计算其重要程度,也就是当这子落下后会形成什么模型,然后通览全盘选出最重要的一点,这便是最基本的算法。当然,仅靠当前盘面进行判断是远远不够的,这样下棋很容易掉进玩家设下的陷阱,因为它没有考虑以后的变化。所以在此基础上我们需要使用好的算法是电脑能预测出今后几步的各种走法,以便做出最佳选择,这也是我们下棋时常说的“想了几步”。怎样才能达到这个程度呢?这是本文所要讨论的主要问题。作为一个五子棋游戏爱好者,在

9、使用了众多的五子棋游戏软件后,发现当今大多数五子棋游戏软件中电脑的AI值不是很高,难与人脑抗衡,这是基于以上的最基本算法扩展而出的电脑最优落子算法不够优秀而造成的。本人使用C#语言作为开发工具,在吸收别人所编的五子棋游戏软件的基础上,再融入自己的创新思想(最优落子算法的改进),编写了这个五子棋游戏,软件实现了人机对弈和双人对弈的功能,游戏软件界面美观,操作容易,电脑的AI值也较高。第一章 需求分析1.1本课题研究的意义 越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己对人工智能比较感兴趣,而五子棋游戏程序的开发实现了这个课题,正好提供给我这样一个研究的机会,通过对人

10、工智能中博弈方面的研究(人机对弈),让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工智能大致可以分成几个任务,这时,这些学科之间的差别就变的很模糊。人工智能在机器人学、模式识别、物景分析、数据库的智能检索、机器下棋(实际上是博弈论问题)和家用电气智能化等领域都有广泛的应用。而这个课题就是和人工智能中博弈论领域紧密相关的。 想要编写五子棋,首先要了解五子棋的发展史,和规则,这样才能在理解的基础上更好的编写出更优秀的五子棋代码。1.2五子棋发展史 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR

11、”Five in a Row的缩写,亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。 对于五子棋与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在

12、中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。1.3五子棋特点及规则 五子棋的娱乐性强、规则简单、易学、流行性广,普通人不需长时间专门训练即可自如行棋,因此极受大众喜欢。 五子棋规则为: 第一:五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点的落子。接着黑方再以天元中心的25个交叉点的范围内落盘面的第三子,之后黑白双方相互顺序子。 第二:最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。 第三:出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之为禁手。

13、第四:禁手只对黑棋有效,白棋无禁手。 第五:黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。 第六:黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。 第七:在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判为负。 第八:在对局中棋子掉落在棋盘上将被判负。若推子或蹭子,以盘面第一落点为准。用手将棋子推正不算违犯规则。 第九:在对局中,一方自行中止比赛如:中途退场,将被判负。 第十:在对局中对方宣布认输,本局获胜。 第十一:超过比赛规定所用时间限制,将被判为负:正式比赛期间,迟到时间超过比赛容许时间将被

14、判负。 第十二:如下至最终一子仍不分胜负则定为平局。 第十三:中盘期间双方 同意和局提议,判定为平局。1.4五子棋常用术语二:二是五子棋的一切进攻的基础;有分为活二和死二。活二:既再下一子可形成活三的二。死二:既再下一子可形成死三的二。三:三是五子棋最常见的攻击手段。三分为活三、死三、眠三。活三:为再下一子既可变成活四的三。或三分为连三、跳三。我们通常所说的三就是指活三而言。如果是死三,将特别指出。死三:既对方有棋子在同一条线相邻交叉防守的三:死三分为三种。眠三:是死三的一种特性,它看上去相邻点没有对方棋子防守,很橡活三,由于受空间限制,不论如何发展不可能称为活四,故称为“眠三”。 反三:反三

15、不是指一种“三”的形状,而是指再阻止对方进攻的同时使自己成为一道活三的反攻,称为反三。? 四:四的形状有三种,它分为:活四,冲四、跳冲四。冲四;在同一条线上相连的相同的四个棋子,它与活四不同的是,其中的一端有对方的棋子进行阻挡,它只有再在另一端下一手棋才可以形成“连五”。 跳冲四“它的形状在“四”中是比较特殊的,一般分为两种,它的特点是同一条线上的同色的四个棋子,有一个或两个棋子与另外三个或两个棋子之间有一个交叉点的间隔,它的下一手棋只有下在间隔的交叉点上才能形象哼“连五。因此,对方的棋子防守时,也只能阻挡在间隔的交叉点上。 一子双杀:指用同一手棋同时形成两个胜点的方法。 追下取胜:是指白棋逼

16、迫黑棋形成禁手而取胜的方法。 自由获胜:除了追下取胜以外的获胜方法,称之为自由获胜。 禁手(Forbidden):指黑方一子落下同时形成两个以上的活三、冲四或形成长连的棋形,是对局中对黑棋禁手使用的战术或被判为负的行棋手段,白棋无禁手,如果黑子在落子的关键的第五子既形成五连的同时,有形成禁手。此时,因黑方已成连五,故禁手失效,黑方胜利。之所以这么规定也是为了规范比赛,其实我们业余的棋手,黑白棋子谁先下都不限制,只是先落子会有比较大的优势,另一方始终处于防守的被动状态。所以哪一方先下子,他就有禁手,这是为了保持公平的一种手段。但是职业连珠五子棋虽然对黑棋采取了种限制但是先行的一方优势依然很大,在

17、高段位的比赛中还添加了一些规定,由于很少用到,就不必叙述了。1.5五子棋攻防 五子棋是一项对抗性很强的运动,在开局进入五手两打后,就开始进入了白刃战,互相争夺先手,任何一方都不能掉以轻心,要尽量可能少犯错误,甚至不犯错误,否则将会导致速败。众所周知,连珠五子,连五为胜,有四才能有五,有三才能有四,以此类推。所以,在五子棋的对局中进攻和防守都是从二和三开始的。“好的开始是成功的一半”,这条格言在五子棋里再合适不过了。五子棋的第年秒的选择十分关键,五子棋实际上是通过选择最佳的落点,加上正确的落子次序,一步一步地占领各个要点,最终获得胜利。对局的早期,选点的着眼点主要是使本方的棋子保持联系,为以后创

18、造尽可能多的成三、成四的机会,同时尽量限制对成为好行。由于在五子棋对弈过程中,通过行棋落点来控制对方的落点是可能的,比如活三、冲四的应点是可以预知的,完全有可能通过不断走出这样的先手来控制对方的着点直至胜利,所以,在对局的后期,就要在精确计算的前提下,尽在发动攻势,以取得棋局的控制权,否则一旦遗失战机,被对方抢先发动攻势,就会成为被控制的一方。当有多个攻击点可供选择时,要选择后续手段多,又不会被对方反先的着点,如果是黑方,还特别要注意进攻终被对方反击时出线的各种禁手点的可能性。进攻分为单攻棋和双攻棋,单攻棋指单线既单向的攻棋子,包括三子攻棋和四子攻棋。而双攻棋指双方或双行的攻棋。包括三、三攻棋

19、;四、三攻棋(冲四活三、冲四填四,冲五活三、填五冲四);四四攻棋(双冲四、双填五、填五冲四)。五子棋的取胜思路是由一个子开始的,目标是运用各种方法在棋盘上发展出五连乃至长连去取胜。在这个发展过程中必然要经过由一子到两子,两子到三子,三子到四子的过程。因此说,把各种形状和各个方面上的二三四等子力结合烂熟于胸,做到举一反三,是学习五子棋的基本功,更是能灵活运用五种取胜技巧的基础。1.6开发工具选择 现在,市场上可以选购的应用开发产品很多,流行的也有数十种。 在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和

20、特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程续语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间,而我在这几种语言中选择了C#。第一是因为C#开发一些软件比较方便快捷;第二是因为C#刚学过,印象比较深,而且做这个游戏,刚好能加深一下印象,还能有个系统的复习。1.7 C#编程语言的介绍 C#读做“C sharp”,中文译音暂时没有.专业人士一般读“C sharp”,

21、现在很多非专业一般读“C井”。 C#是一种精确、简单、类型安全、面向对象的语言。说到C#,就不得不先简单介绍一下.NET。到底什么是.NET呢,按照微软总裁兼首席执行官Steve Ballrner把它定义为:.NET代表一个集合,一个环境,它可以作为平台支持下一代Internet的可编程结构。C#是.NET的代表语言 C#是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷

22、的面向组件编程的支持成为.NET开发的首选语言。1.8 C#编程语言的特点 第一:完全面向对象 第二:支持分布式,之所以有C#,是因为微软相信分布式应用程序是未来的趋势,即处理过程分布在客户机和服务器上。所以C#一出生就注定了能很好解决分布式问题。 第三:跟Java类似,C#代码经过编译后,成为一种IL(中间语言)。在运行时,再把IL编译为平台专用的代码。 第四:健壮,C#在检查程序错误和编译与运行时错误一点也不逊于Java,C#也用了自动管理内存机制。 第五:C#不像Java那样完全摒弃了指针和手动内存管理。C#默认情况下是不能使用指针的,程序员在有必要时可以打开指针来使用。这样可以保证编程

23、的灵活性。 第六:安全性:C#的安全性是有.NET平台提供的。C#代码编译后成为一种IL语言。是一种受控代码,.NET提供类型安全检查等机制保证代码是安全的。 第七:可移植性:由于C#使用类似Java的中间语言机制。使得C#也跟Java类似,可以很方便的移植到其他系统。在运行时,再把中间代码编译为适合特定机器的代码。 第八:解释性:C#也是一种特殊的解释性语言。 第九:高性能:C#把代码编译成中间语言后,可以高效的执行程序。 第十:多线程:与Java类似,可以有一个主进程分出多个执行小任务的多线程。 第十一:组建模式:C#很适合组件开发。各个组件可以由其他语言实现的,然后集成在.NET中。 C

24、#是在Java流行起来后所诞生的一种新的语言。由于微软在操作系统上占有很大的优势。在以往的开发中积累了不少经验,所形成的.NET平台,所以C#在Windows方面可以说比Java具有更大的优势。如果单纯从技术上来讲,C#在网络编程上可以与Java匹敌。C#还在Windows Forms也有一定的优势。 C#是一种非常类似于C+的语言,风格是更接近与Java,不管是C+程序员还是Java程序员,都可以很方便转到C#上来。 C#目前主要是应用在网络编程上,其他领域比如数据库,窗体编程,都在逐渐增大。1.9 Visual Studio 软件简介1.9.1简介 Visual Studio是目前最流行的

25、Windows平台应用程序开发环境。目前已经开发到 11.0 版本,也就是Visual Studio 2012。1.9.2 Visual Studio 2005的特点 Visual Studio是微软公司推出的开发环境,Visual Studio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、只能设备应用程序和Office插件。 Microsoft Visual Studio 2005是面向Windows Vista、Windows 7、Office 2007、Web 2.0的下一代开发工具代号“Orcas”,是对Visual Studio 20

26、05一次及时、全面的升级。VS2008引入了250多个新特性,整合了对象、关系数据库、XML的访问方式语言更加简洁。 使用Visual Studio 2005可以高效开发Windows应用。设计器重可以实时反映变更XAML中只能感知功能可以提高开发效率。同时Visual Studio 2005支持项目模板、调试器和部署程序。Visual Studio 2005可以高效开发Web应用,集成了ASP.NET AJAX1.0,包含ASP.NET AJAX项目模板,它还可以高效开发Office应用和Mobile应用。 图1-1 Visual Studio 2005软件界面 第二章 系统分析2.1系统调

27、研及可行性分析2.1.1 系统调研 正式开发五子棋游戏之前进行调研是非常必要的,其必要性主要表现在以下几个方面。 (1)明确用户的要求,以根据调查结果进行可行性分析,确认系统的开发是否可行。 (2)提出新系统的人员并不都是系统研究人员,有些人对于其功能和处理数据的方法没有明确的认识。它们只是根据自己业务工作的需要提出了要求,系统开发人员要对此进行详细的调查和分析,确认用户的要求可以通过现有的计算机技术实现,保证开发的管理信息系统的功能与用户提出的要求相吻合。总之,必要对现行系统进行详细的调查,明确用户需求,保证开发的新系统的功能与用户的要求相吻合,避免耗费大量的人力、物力、财力,新系统的开发却

28、失败的悲剧发生。2.1.2 可行性分析 可行性分析是在用户的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。 可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。 可行性分析阶段的主要工作包括以下几个方面: 新系统目标可行性分析: 分析新系统的目标是否符合企业的现状和发展的需要。 社会可行性分析: 社会可行性分析主要是指管理信息系统的开发是否符合国家法律政策,是

29、否能够与社会大系统实现良好的对接。 技术可行性分析: 技术可行性分析是根据新系统的目标来衡量是否具备所需要的技术,包括系统开发人员数量和水平,硬件方面,软件方面及其它应用技术。 经济可行性分析 经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较,确认新系统是否会给企业带来一定的经济效益。 管理可行性分析: 管理可行性分析主要是分析企业现行的管理体制和企业领导是否具有现代化的管理意识和管理水平。2.1.3 技术可行性分析 技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新系统开发人员的数量和水平,即人力资源;硬件和软件资源。 (1)技术支持

30、: 首先根据新系统的目标,考虑目前有关的技术能否支持所开发的新系统。这里讨论的技术必须是已经普遍使用的,而不是待研究的或正在研究的。 对于本系统, 本人是采用C#编写的。而在开发五子棋的过程运用到了,图形的绘制(主要是对棋子的绘制,棋盘的绘制的)。还有C#种对声音的播放方式(主要是用于下棋的时候的落子声音,悔棋时的声音,赢棋时的声音,输棋的声音)。文件的保存和载入(主要用于对棋盘信息的储存和打开)。 (2)硬件资源: 开发管理信息系统所需的硬件资源包含以下两个方面: 系统开发人员在管理信息系统的开发过程中所需要的计算机设备及其有关的外部设备;管理信息系统开发成功投入使用后,使用单位所应具备的计

31、算机设备及其有关的外围设备。对硬件资源进行可行性分析时主要考虑计算机的主机内存、类型、功能、联网能力、安全保护措施以及输入/输出设备,外存储器和联网数据通信设备的配置、功能、效率等指标是否符合系统方案设计要求,同时还要考虑计算机的性能/价格比。本系统对计算机的要求不高,一般的硬件配置都能运行此系统。2.2设计分析2.2.1游戏运行说明 想要运行游戏,可以用Visual Studio 2005 打开软件,然后按F5键运行。也可以打开五子棋文-FiveStone-bin-Debug-FiveStone.exe运行。2.2.2游戏规则图2-2 主界面 如图为游戏的主界面,左边的方格为棋盘,游戏的规则

32、是在棋盘上下棋,只要由一方先在棋盘中有五个子连线,那么该方就为赢家。 图2-3 帮助界面 详细规则可点击图2-3中的规则查看详细规则,点击后会出现如图2-4所示: 图2-4 五子棋规则2.2.3游戏操作 (1)游戏开始 想开始游戏,可以直接点击棋盘开始下棋。默认是玩家先行。 如图5-4也可以在在菜单栏中的设置里面选择电脑先行。 图2-5 设置界面 (2)游戏难度 如图2-6,在级别中也可以设置电脑的强度,然后,则可以供不同程度的人来玩。这样不仅能锻炼玩家的游戏水平,也可以增加很多趣味性。 图2-6 级别 (3)游戏保存 如果一盘棋没有完成,然后由于玩家时间有限,急于去忙其他的事情,则可以,保存

33、该盘棋的进度。然后下次运行该程序的时候,再点击文件,点击载入然后选择上次保存的进度,则可以继续下棋。 图2-7文件 (4)悔棋 有的时候,会不小心点错地方,从而导致下错棋,本系统中还有个悔棋功能如图2-8所示,如果在不小心下错棋的时候则单击可以悔棋。 当然这个功能还有一个另外的用法,单击后退以后,再单击前进,然后,你之前所下的棋子,会一步步出现,这样就可以欣赏刚才自己下棋的风采了。 图2-8 悔棋界面2.3游戏玩法 游戏的玩法,在操作里面已经差不多介绍完毕,当然,本系统还有个比较趣味的设置就是在级别里面的棋子兑换功能,如图2-8所示,这样在你即将输掉比赛的时候,可以点击棋子兑换,然后,就可以很

34、轻松的获胜了。当然这仅供娱乐,不建议使用。 图2-9 棋子兑换 在帮助里面还有一个关于点击后则会关于,没有什么别的用途,只是介绍了一下自己的信息,如图2-10所示 图2-10 本人信息 2.4主要模块分析 在本游戏中,最难实现的也是最主要的模块就是在棋盘上绘制棋子的实现、棋子输赢的判断实现、悔棋类的实现。2.4.1下棋类的实现 下棋类的实现主要是通过,g.DrawImageimage,x,y方法。image是图片的名称,然后x,y是要在棋盘绘制棋子的位置。 而首先,是要把图片加载到Resources.resx如图2-11所示 图2-11 资源 然后通过global:/.ources.然后加载R

35、esources.resx里面的图片就可以了。string, qipan new string24, 24;/定义二维棋盘 /初始化棋盘 label0: Console.Clear;for int i 5; i size; i+ for int j 5; j size; j+ qipani, j ; /输出棋盘 for int i 5; i size; i+ for int j 5; j size; j+ Console.Writeqipani, j;Console.Writen; /走棋 label2: /甲方走棋Console.WriteLine;Console.WriteLine请甲方走

36、棋棋盘为15x15;Console.Writex;x1 Console.ReadLine;/判断输入的坐标值是否为字母foreachchar ch in x1 if ch a&ch z|ch A&ch Z Console.WriteLine你输入的坐标值非法!请正确输入你的坐标值; goto label2; /判断输入的棋子坐标是否为空if x1 | x1 nullConsole.WriteLine; Console.WriteLine你输入的棋盘坐标为空!; goto label2;Console.Writey;y1 Console.ReadLine;/判断输入的坐标值是否为字母foreac

37、h char ch in y1 if ch a & ch z | ch A & ch Z Console.WriteLine你输入的坐标值非法!请正确输入你的坐标值; goto label2; /判断输入的棋子坐标是否为空if y1 | y1 null Console.WriteLine; Console.WriteLine你输入的棋盘坐标为空!; goto label2;x int.Parsex1;y int.Parsey1;if x 16 | y 16 Console.WriteLine; Console.WriteLine你输入的坐标超出了范围!; goto label2;if qipa

38、nx + 4, y + 4 qipanx + 4, y + 4 ; /清屏 Console.Clear; for int i 5; i size; i+ for int j 5; j size; j+ Console.Writeqipani, j; Console.Writen; else Console.WriteLine; Console.WriteLine此处已经有棋子了; goto label2; 2.4.2游戏输赢判断类 当每走一步棋以后,打电脑会把你所走的棋的位置计算出来,然后,计算,如果其在在上下方向,左右方向,斜方向,有五个颜色相同的棋子,那么则判断该颜色的棋子获胜。/判断是否

39、可以连成五子/判断上下 col_down 0; col_up 0; row_left 0; row_right 0; dia_left_down 0; dia_left_up 0; dia_right_down 0; dia_right_up 0;for m 1; m 4; m+ /判断上下 if qipanx + 4, y + 4 qipanx - m + 4, y + 4 & qipanx - m + 4, y + 4 ! & qipanx - m + 4, y + 4 ! col_up+; if qipanx + 4, y + 4 qipanx + m + 4, y + 4 & qipa

40、nx - m + 4, y + 4 ! & qipanx - m + 4, y + 4 ! col_down+; /判断左右 if qipanx + 4, y + 4 qipanx + 4, y - m + 4 & qipanx - m + 4, y + 4 ! & qipanx - m + 4, y + 4 ! row_left+; if qipanx + 4, y + 4 qipanx + 4, y + m + 4 & qipanx - m + 4, y + 4 ! & qipanx - m + 4, y + 4 ! row_right+; /判断左对角线 if qipanx + 4, y

41、 + 4 qipanx - m + 4, y - m + 4 & qipanx - m + 4, y + 4 ! & qipanx - m + 4, y + 4 ! dia_left_up+; if qipanx + 4, y + 4 qipanx + m + 4, y + m + 4 & qipanx - m + 4, y + 4 ! & qipanx - m + 4, y + 4 ! dia_left_down+; /判断右对角线 if qipanx + 4, y + 4 qipanx - m + 4, y + m + 4 & qipanx - m + 4, y + 4 ! & qipan

42、x - m + 4, y + 4 ! dia_right_up+; if qipanx + 4, y + 4 qipanx + m + 4, y - m + 4 & qipanx - m + 4, y + 4 ! & qipanx - m + 4, y + 4 ! dia_right_down+; /判断甲方是否有构成五子if dia_left_down 4 | dia_left_up 4 | col_up 4 | col_down 4 | row_right 4 | row_left 4 | dia_right_up 4 | dia_right_down 4 Console.WriteLin

43、e甲方先构成五子连线,恭喜甲获胜!; Console.WriteLine请选择:; Console.WriteLine1、 继续下一局; Console.WriteLine2、 结束棋局; judgement /.dLine; switch judgement case 1: goto label0;default: goto label3; if col_down + col_up 4 | row_left + row_right 4 | dia_left_down + dia_left_up 4 | dia_right_down + dia_right_up 4 Console.Write

44、Line甲方先构成五子连线,恭喜甲获胜!; Console.WriteLine请选择:; Console.WriteLine1、 继续下一局; Console.WriteLine2、 结束棋局; judgement /.dLine; switch judgement case 1: goto label0;default: goto label3; 2.4.3悔棋类的实现 首先在窗体上放了一个listbox控件,然后,每走一步棋就会执行/.ms.Add黑棋 + smart.poxsequcei % 15.ToString + , + smart.poxsequcei / 15.ToString

45、;,然后把棋子的位置信息都输出到listbox里面。 当要悔棋的时候,则会根据listbox里面的位置信息,把相应的棋子绘制到棋盘里面,从而达到悔棋的效果。else ifstr0BACK/对方要求悔棋 ifMessageBox.Show对方要求悔棋,是否同意?, 五子棋,/0. SendOK|;else SendNO|; else ifstr0OK/对方同意悔棋 ChessBack;/悔棋/.t; else ifstr0NO MessageBox.Show对方不同意悔棋.,五子棋;/.t; 第三章 运行测试 图3-1 主界面 运行时,主界面如图3-1所示。 玩家如果想开始时游戏,则可以在菜单了设置里面选择谁先下,如图3-2所示 图3-2 开始界面 当单击开始以后,则游戏开始,假如是玩家先行。当电脑赢的时候界面如图3-3所示。 图3-3 输棋界面 当玩家赢棋的时候,则会出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1