毕业设计(论文)-C#五子棋游戏的设计与开发.doc_第1页
毕业设计(论文)-C#五子棋游戏的设计与开发.doc_第2页
毕业设计(论文)-C#五子棋游戏的设计与开发.doc_第3页
毕业设计(论文)-C#五子棋游戏的设计与开发.doc_第4页
毕业设计(论文)-C#五子棋游戏的设计与开发.doc_第5页
免费预览已结束,剩余32页可下载查看

下载本文档

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

文档简介

1 学校代码: 学 号:200809201105 henan institute of engineering 毕业设计(论文)毕业设计(论文) 题 目 五子棋游戏的 _设计与开发_ 学生姓名 专业班级 0801 学 号 系 (部) 计算机科学与工程系 指导教师(职称) 完成时间 2011 年 5 月 20 日 2 河南工程学院论文版权使用授权书河南工程学院论文版权使用授权书 本人完全了解河南工程学院关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交论文的印刷本和电子版本;学校有权 保存论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段 保存论文;学校有权提供目录检索以及提供本论文全文或者部分的阅览服务; 学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版; 在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于 学术活动。 论文作者签名: 年 月 日 3 河南工程学院毕业设计河南工程学院毕业设计(论文论文)原创性声明原创性声明 本人郑重声明:所呈交的论文,是本人在指导教师指导下,进行研究工作 所取得的成果。除文中已经注明引用的内容外,本论文的研究成果不包含任何 他人创作的、已公开发表或者没有公开发表的作品的内容。对本论文所涉及的 研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本学位论 文原创性声明的法律责任由本人承担。 论文作者签名: 年 月 日 4 目目 录录 1 1概述概述 1 1 1.1 课题背景 .1 1.2 本课题研究的意义 1 2 2 开发工具选择开发工具选择 1 1 2.1 c#编程语言的介绍.2 2 2.2 c#编程语言的特点.2 2.3 visual studio 软件简介3 2.3.1 简介 .3 2.3.2 发展历程 .3 2.3.3visual studio 2008 特点4 3 3 系统调研及可行性分析系统调研及可行性分析5 3.1 系统调研 5 3.2 可行性分析 .5 3.3 技术可行性分析.6 4 4 系统分析系统分析7 4.1 五子棋发展史 .7 4.2 五子棋特点及规则.7 4.3 五子棋常用术语 8 4.4 五子棋攻防.9 4.5 数据流程图 10 5 5 设计分析设计分析11 5.1 游戏运行说明 11 5.2 游戏规则 11 5.3 游戏操作 .12 5.4 游戏玩法 .13 5.5 主要模块分析 14 5.5.1 下棋类的实现.14 5.5.2 游戏输赢判断类14 5.5.3 悔棋类的实现.14 6 6代码设计代码设计15 6.1 打开保存代码 15 6.2 电脑下棋的代码 16 6.3 悔棋的代码 23 5 7 7 程序运行结果程序运行结果26 8 8 结束语结束语 28 致谢致谢29 参参 考考 文文 献献30 i 五子棋游戏的开发与设计五子棋游戏的开发与设计 摘摘 要要 随着人们的生活节奏的变快,游戏已经成为人们生活中不可缺少的一部分,它不随着人们的生活节奏的变快,游戏已经成为人们生活中不可缺少的一部分,它不 仅能使人娱乐,放松人们的心情,也能够开发人的智力。所以说休闲游戏的开发将会仅能使人娱乐,放松人们的心情,也能够开发人的智力。所以说休闲游戏的开发将会 是大势所趋,本文主要是通过对五子棋游戏的开发来提高自己的编程能力。是大势所趋,本文主要是通过对五子棋游戏的开发来提高自己的编程能力。 本文是用的是本文是用的是 visualvisual studiostudio 20082008 开发工具,用开发工具,用 c#c#语言编写开发出的一个简单的语言编写开发出的一个简单的 五子棋游戏。该游戏主要包括人机对战和玩家之间的联网对战。人机版可以选择谁先五子棋游戏。该游戏主要包括人机对战和玩家之间的联网对战。人机版可以选择谁先 行、悔棋,判断输赢,有禁手和无禁手切换等功能。网络版通过输入行、悔棋,判断输赢,有禁手和无禁手切换等功能。网络版通过输入 ipip 地址,连接后地址,连接后 开始游戏。开始游戏。 关键词 游游戏戏 五五子子棋棋 c c# # 编编程程 visualvisual studiostudio 20082008 ii development and design gobang abstract with the faster pace of life, the game has become an indispensable 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 backgammon game to improve their programming skills. this is a visual studio 2008 development tools, c # language to develop a simple backgammon game. battle of the game machine and includes network play between players. man-machine version can choose who first, undo, to determine winning or losing, there is no ban hand-cut hand and switching functions. by entering the ip address online, connected to start the game keywords backgammon game programming visual studio 2008 c # 1 1 1概述概述 1.11.1 课题背景课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译 为 renju,英文称只为 gobang 或 fir(five in a row 的缩写) ,亦有连五子、五子连、 串珠、五幕、五目碰等多种称谓。 五子棋起源于古代中国,发展在日本,风靡于欧洲。对于它于围棋的关系有两种 说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围 棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。人世纪初五子棋传 入欧洲并速度风靡全球。通过一系列的变化,使五子棋这一简单的游戏复杂化、规模 化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。 1.21.2 本课题研究的意义本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的 娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇 高,大有与人脑分庭抗礼之势。 越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易 见。自己对人工智能比较感兴趣,而五子棋游戏程序的开发实现了这个课题,正好提 供给我这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对弈) ,让我在 简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工智能大致可 以分成几个任务,这时,这些学科之间的差别就变的很模糊。人工智能在机器人学、 模式识别、物景分析、数据库的智能检索、机器下棋(实际上是博弈论问题)和家用 电气智能化等领域都有广泛的应用。而这个课题就是和人工智能中博弈论领域紧密相 关的。 2 2 开发工具选择开发工具选择 现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市 场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有: microsoft 公司的 visual basic microsoft 公司的 visual c borland 公司的 delphi 2 java c#等等 在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率;有些 则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色, 也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便 利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫 来处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程续语言 的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严 重地浪费程序设计师的宝贵时间,而我在这几种语言中选择了 c#。第一是因为 c#开发 一些软件比较方便快捷;第二是因为 c#刚学过,印象比较深,而且做这个游戏,刚好 能加深一下印象,还能有个系统的复习。 2.12.1 c#c#编程语言的介绍编程语言的介绍 c#(读做 “c sharp“,中文译音暂时没有.专业人士一般读“c sharp“,现在很多非专 业一般读“c 井“。 c#是一种精确、简单、类型安全、面向对象的语言。说到 c#,就不得不先简单介 绍一下.net。到底什么是.net 呢,按照微软总裁兼首席执行官 steve ballrner 把它定义为: .net 代表一个集合,一个环境,它可以作为平台支持下一代 internet 的可编程结构。c# 是.net 的代表语言 c#是一种安全的、稳定的、简单的、优雅的,由 c 和 c+衍生出来的面向对象的 编程语言。它在继承 c 和 c+强大功能的同时去掉了一些它们的复杂特性(例如没有 宏和模版,不允许多重继承) 。c#综合了 vb 简单的可视化操作和 c+的高运行效率, 以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支 持成为.net 开发的首选语言。 2.22.2 c#c#编程语言的特点编程语言的特点 第一:完全面向对象 第二:支持分布式,之所以有 c#,是因为微软相信分布式应用程序是未来的趋势, 即处理过程分布在客户机和服务器上。所以 c#一出生就注定了能很好解决分布式问题。 第三:跟 java 类似,c#代码经过编译后,成为一种 il(中间语言) 。在运行时,再 把 il 编译为平台专用的代码。 第四:健壮,c#在检查程序错误和编译与运行时错误一点也不逊于 java,c#也用 了自动管理内存机制。 第五:c#不像 java 那样完全摒弃了指针和手动内存管理。c#默认情况下是不能使 用指针的,程序员在有必要时可以打开指针来使用。这样可以保证编程的灵活性。 第六:安全性:c#的安全性是有.net 平台提供的。c#代码编译后成为一种 il 语言。 是一种受控代码,.net 提供类型安全检查等机制保证代码是安全的。 第七:可移植性:由于 c#使用类似 java 的中间语言机制。使得 c#也跟 java 类似, 3 可以很方便的移植到其他系统。在运行时,再把中间代码编译为适合特定机器的代码。 第八:解释性:c#也是一种特殊的解释性语言。 第九:高性能:c#把代码编译成中间语言后,可以高效的执行程序。 第十:多线程:与 java 类似,可以有一个主进程分出多个执行小任务的多线程。 第十一:组建模式:c#很适合组件开发。各个组件可以由其他语言实现的,然后集 成在.net 中。 c#是在 java 流行起来后所诞生的一种新的语言。由于微软在操作系统上占有很大 的优势。在以往的开发中积累了不少经验,所形成的.net 平台,所以 c#在 windows 方 面可以说比 java 具有更大的优势。如果单纯从技术上来讲,c#在网络编程上可以与 java 匹敌。c#还在 windows forms 也有一定的优势。 c#是一种非常类似于 c+的语言,风格是更接近与 java,不管是 c+程序员还是 java 程序员,都可以很方便转到 c#上来。 c#目前主要是应用在网络编程上,其他领域比如数据库,窗体编程,都在逐渐增大。 2.32.3 visualvisual studiostudio 软件简介软件简介 .1 简介简介 visual studio 是目前最流行的 windows 平台应用程序开发环境。目前已经开发到 10.0 版本,也就是 visual studio 2010。 .2 发展历程发展历程 visual studio 97 是最早的 visual studio 版本。包含有面向 windows 开发使用的 visual basic 5.0、visual c+ 5.0,面向 java 开发的 visual j+ 和面向数据库开发的 visual foxpro,还包含有创建 dhtml (dynamic html) 所需要的 visual interdev。其 中,visual basic 和 visual foxpro 使用单独的开发环境,其他的开发语言使用统一的 开发环境。 1998 年,微软公司发布了 visual studio 6.0。所有开发语言的开发环 境版本均升至 6.0。这也是 visual basic 最后一次发布,从下一个版本 (7.0) 开始, microsoft basic 进化成了一种新的面向对象的语言:microsoft basic net。由于微软公 司对于 sun 公司 java 语言扩充导致与 java 虚拟机不兼容被 sun 告上法庭,微软在 后续的 visual studio 中不再包括面向 java 虚拟机的开发环境。 2002 年,随着 .net 口号的提出与 windows xp / office xp 的发布,微软发布了 visual studio .net(内部版本号为 7.0) 。在这个版本的 visual studio 中,微软剥离了 visual foxpro 作为一个单独的开发环境以 visual foxpro 7.0 单独销售,同时取消了 visual interdev。与此同时,微软引入了建立在 .net 框架上(版本 1.0)的托管代码机制以 及一门新的语言 c# (读作 c sharp,意为 c+) 。c# 是一门建立在 c+和 java 基础上的现代语言,是编写 .net 框架的语言。 .net 的通用语言框架机制 (common language runtime, clr) ,其目的是在同一个项目中支持不同的语言所开发 的组件。所有 clr 支持的代码都会被解释成为 clr 可执行的机器代码然后运行。 4 visual basic、visual c+ 都被扩展为支持托管代码机制的开发环境,且 visual basic .net 更是从 visual basic 脱胎换骨,彻底支持面向对象的编程机制。而 visual j+ 也 变为 visual j#。后者仅语法同 java 相同,但是面向的不是 java 虚拟机,而是 .net framework。 2003 年,微软对 visual studio 2002 进行了部分修订,以 visual studio 2003 的名义发布(内部版本号为 7.1) 。visio 作为使用统一建模语言(uml) 架构应用程序框架的程序被引入,同时被引入的还包括移动设备支持和企业模版。 .net 框架也升级到了 1.1。 2005 年,微软发布了 visual studio 2005。.net 字 眼从各种语言的名字中被抹去,但是这个版本的 visual studio 仍然还是面向 .net 框 架的(版本 2.0) 。 这个版本的 visual studio 包含有众多版本,分别面向不同的 开发角色。同时还永久提供免费的 visual studio express 版本。 随着即将发布的 windows vista 和 office 2007,visual studio 9 也渐渐浮出水面。visual studio 9 目前 可以确定的是支持建立于 dhtml 基础上的 ajax 技术,这种微软在 visual interdev 时代提出的基于异步的客户端动态网页技术在当年并没有像微软预期中的那么流行起 来,反而随着 gmail 等应用而东山再起,渐渐成为主流网络应用之一。同时 visual studio 9 会强化对于数据库的支持以及微软新的基于工作流(workflow)的编程模型。 预计为了保持与 office 系列的统一,visual studio 9 的名称为 visual studio 2007。 2007 年 11 月,微软发布了 visual studio 2008 英文版, 2008 年 2 月 14 日发布了 简体中文专业版。 2010 年 4 月 12 微软发布 visual studio 2010 以及.net framework 4.0,并于 2010 年 5 月 26 发布了中文版 2.3.3visual2.3.3visual studiostudio 20082008 特点特点 visual studio 是微软公司推出的开发环境,visual studio 可以用来创建 windows 平台 下的 windows 应用程序和网络应用程序,也可以用来创建网络服务、只能设备应用程 序和 office 插件。 microsoft visual studio 2008 是面向 windows vista、windows 7、office 2007、web 2.0 的下一代开发工具代号“orcas” ,是对 visual studio 2005 一次及时、全面的升级。 vs2008 引入了 250 多个新特性,整合了对象、关系数据库、xml 的访问方式语言更 加简洁。 使用 visual studio 2008 可以高效开发 windows 应用。设计器重可以实时反映变更 xaml 中只能感知功能可以提高开发效率。同时 visual studio 2008 支持项目模板、调 试器和部署程序。visual studio 2008 可以高效开发 web 应用,集成了 asp.net ajax1.0,包含 asp.net ajax 项目模板,它还可以高效开发 office 应用和 mobile 应用。 5 图 1 visual studio 2008 软件界面 3 3 系统调研及可行性分析系统调研及可行性分析 3.13.1 系统调研系统调研 正式开发五子棋游戏之前进行调研是非常必要的,其必要性主要表现在以下几个方 面。 (1)明确用户的要求,以根据调查结果进行可行性分析,确认系统的开发是否可 行。 (2)提出新系统的人员并不都是系统研究人员,有些人对于其功能和处理数据的 方法没有明确的认识。它们只是根据自己业务工作的需要提出了要求,系统开发人员 要对此进行详细的调查和分析,确认用户的要求可以通过现有的计算机技术实现,保 证开发的管理信息系统的功能与用户提出的要求相吻合。 (3)企业的现行系统可能是手工系统,也可能是使用和计算机的系统,无论是何 种情况,都要详细地调查现行系统中信息处理的具体情况,系统内部功能结构,以便 设计出一个合理的、好的新系统逻辑模型,为新系统的设计工作打好基础,保证整个 系统开发的质量。 总之,必要对现行系统进行详细的调查,明确用户需求,保证开发的新系统的功能与 用户的要求相吻合,避免耗费大量的人力、物力、财力,新系统的开发却失败的悲剧 发生。 6 3.23.2 可行性分析可行性分析 可行性分析是在用户的要求和系统调研的基础上进行的,对新系统的开发从社会、 技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修 改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。 可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴 定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。 (1)可行性分析阶段的主要工作包括以下几个方面: 新系统目标可行性分析: 分析新系统的目标是否符合企业的现状和发展的需要。 社会可行性分析: 社会可行性分析主要是指管理信息系统的开发是否符合国家法律、下策,是否能够 与社会大系统实现良好的对接。 技术可行性分析: 技术可行性分析是根据新系统的目标来衡量是否具备所需要的技术,包括系统开发 人员数量和水平,硬件方面,软件方面及其它应用技术。 经济可行性分析 经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济 效益进行比较,确认新系统是否会给企业带来一定的经济效益。 管理可行性分析: 管理可行性分析主要是分析企业现行的管理体制和企业领导是否具有现代化的管理 意识和管理水平。 3 33 3 技术可行性分析技术可行性分析 技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新 系统开发人员的数量和水平,即人力资源;硬件和软件资源。 (1)技术支持: 首先根据新系统的目标,考虑目前有关的技术能否支持所开发的新系统。这里讨论 的技术必须是已经普遍使用的,而不是待研究的或正在研究的。 7 对于本系统, 本人是采用 c#编写的。而在开发五子棋的过程运用到了,图形的绘 制(主要是对棋子的绘制,棋盘的绘制的) 。还有 c#种对声音的播放方式(主要是用于 下棋的时候的落子声音,悔棋时的声音,赢棋时的声音,输棋的声音) 。文件的保存和 载入(主要用于对棋盘信息的储存和打开) 。 (2)硬件资源: 开发管理信息系统所需的硬件资源包含以下两个方面: 系统开发人员在管理信息系统的开发过程中所需要的计算机设备及其有关的外部设 备;管理信息系统开发成功投入使用后,使用单位所应具备的计算机设备及其有关的 外围设备。对硬件资源进行可行性分析时主要考虑计算机的主机内存、类型、功能、 联网能力、安全保护措施以及输入/输出设备,外存储器和联网数据通信设备的配置、 功能、效率等指标是否符合系统方案设计要求,同时还要考虑计算机的性能/价格比。 本系统对计算机的要求不高,一般的硬件配置都能运行此系统。 (3)软件资源 软件资源的可行性分析主要考虑以下几点是否满足用户的要求: 操作系统的选择;window98/2000/2003/vista/win7 编译系统的选择;visual studio 2008 高级编程语言的选择;c# 4 4 系统分析系统分析 想要编写五子棋,首先要了解五子棋的发展史,和规则,这样才能在理解的基础上 更好的编写出更优秀的五子棋代码。 4.14.1 五子棋发展史五子棋发展史 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠” , 英译为“renju” ,英文称之为“gobang”或“fir”(five in a row 的缩写),亦有“连 五子” 、 “五子连” 、 “串珠” 、 “五目” 、 “五目碰” 、 “五格”等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既 有现代休闲的明显特征“短、平、快” ,又有古典哲学的高深学问“阴阳易理” ;它既 有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛; 8 它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点” 的连接。它是中西文化的交流点,是古今哲理的结晶。 对于五子棋与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间 就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受 人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一 起在我国南北朝时先后传入朝鲜、日本等地。 4.24.2 五子棋特点及规则五子棋特点及规则 五子棋的娱乐性强、规则简单、易学、流行性广,普通人不需长时间专门训练即可 自如行棋,因此极受大众喜欢 五子棋规则为: 第一:五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点 的落子。接着黑方再以天元中心的 25 个交叉点的范围内落盘面的第三子,之后黑白双 方相互顺序子。 第二:最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜 第三:出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连 均称之为禁手。 第四:禁手只对黑棋有效,白棋无禁手。 第五:黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑方禁手 存在而继续应子,其后指出黑方禁手不能判黑方负。 第六:黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。 第七:在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判为负。 第八:在对局中棋子掉落在棋盘上将被判负。若推子或蹭子,以盘面第一落点为准。 用手将棋子推正不算违犯规则。 第九:在对局中,一方自行中止比赛如:中途退场,将被判负。 第十:在对局中对方宣布认输,本局获胜。 第十一:超过比赛规定所用时间限制,将被判为负:正式比赛期间,迟到时间超过 比赛容许时间将被判负。 第十二:如下至最终一子仍不分胜负则定为平局。 第十三:中盘期间双方 同意和局提议,判定为平局。 4.34.3 五子棋常用术语五子棋常用术语 二:二是五子棋的一切进攻的基础;有分为活二和死二。 活二:既再下一子可形成活三的二 死二:既再下一子可形成死三的二 三:三是五子棋最常见的攻击手段。三分为活三、死三、眠三。 活三:为再下一子既可变成活四的三。或三分为连三、跳三。 9 我们通常所说的三就是指活三而言。如果是死三,将特别指出。 死三:既对方有棋子在同一条线相邻交叉防守的三:死三分为三种, 眠三:是死三的一种特性,它看上去相邻点没有对方棋子防守,很橡活三,但由于 受空间限制,不论如何发展不可能称为活四,故称为“眠三” , 反三:反三不是指一种“三”的形状,而是指再阻止对方进攻的同时使自己成为一 道活三的反攻,称为反三。 四:四的形状有三种,它分为:活四,冲四、跳冲四。 冲四;在同一条线上相连的相同的四个棋子,它与活四不同的是,其中的一端有对方的 棋子进行阻挡,它只有再在另一端下一手棋才可以形成“连五” 。 跳冲四“它的形状在“四”中是比较特殊的,一般分为两种,它的特点是同一条线 上的同色的四个棋子,有一个或两个棋子与另外三个或两个棋子之间有一个交叉点的 间隔,它的下一手棋只有下在间隔的交叉点上才能形象哼“连五。因此,对方的棋子 防守时,也只能阻挡在间隔的交叉点上。 一子双杀:指用同一手棋同时形成两个胜点的方法。 追下取胜:是指白棋逼迫黑棋形成禁手而取胜的方法。 自由获胜:除了追下取胜以外的获胜方法,称之为自由获胜。 禁手(forbidden):指黑方一子落下同时形成两个以上的活三、冲四或形成长连的 棋形,是对局中对黑棋禁手使用的战术或被判为负的行棋手段,白棋无禁手,如果黑 子在落子的关键的第五子既形成五连的同时,有形成禁手。此时,因黑方已成连五, 故禁手失效,黑方胜利。之所以这么规定也是为了规范比赛,其实我们业余的棋手, 黑白棋子谁先下都不限制,只是先落子会有比较大的优势,另一方始终处于防守的被 动状态。所以哪一方先下子,他就有禁手,这是为了保持公平的一种手段。但是职业 连珠五子棋虽然对黑棋采取了种限制但是先行的一方优势依然很大,在高段位的比赛 中还添加了一些规定,由于很少用到,就不必叙述了。 4.44.4 五子棋攻防五子棋攻防 五子棋是一项对抗性很强的运动,在开局进入五手两打后,就开始进入了白刃战, 互相争夺先手,任何一方都不能掉以轻心,要尽量可能少犯错误,甚至不犯错误,否 则将会导致速败。众所周知,连珠五子,连五为胜,有四才能有五,有三才能有四, 以此类推。所以,在五子棋的对局中进攻和防守都是从二和三开始的。 “好的开始是成 功的一半” ,这条格言在五子棋里再合适不过了。 五子棋的第年秒的选择十分关键,五子棋实际上是通过选择最佳的落点,加上正确 的落子次序,一步一步地占领各个要点,最终获得胜利。 对局的早期,选点的着眼点主要是使本方的棋子保持联系,为以后创造尽可能多的 成三、成四的机会,同时尽量限制对成为好行。由于在五子棋对弈过程中,通过行棋 落点来控制对方的落点是可能的,比如活三、冲四的应点是可以预知的,完全有可能 通过不断走出这样的先手来控制对方的着点直至胜利,所以,在对局的后期,就要在 精确计算的前提下,尽在发动攻势,以取得棋局的控制权,否则一旦遗失战机,被对 方抢先发动攻势,就会成为被控制的一方。 当有多个攻击点可供选择时,要选择后续手段多,又不会被对方反先的着点,如果 是黑方,还特别要注意进攻终被对方反击时出线的各种禁手点的可能性。 进攻分为单攻棋和双攻棋,单攻棋指单线既单向的攻棋子,包括三子攻棋和四子攻棋。 10 而双攻棋指双方或双行的攻棋。包括三、三攻棋;四、三攻棋(冲四活三、冲四填四, 冲五活三、填五冲四) ;四四攻棋(双冲四、双填五、填五冲四) 。 五子棋的取胜思路是由一个子开始的,目标是运用各种方法在棋盘上发展出五连乃 至长连去取胜。在这个发展过程中必然要经过由一子到两子,两子到三子,三子到四 子的过程。因此说,把各种形状和各个方面上的二三四等子力结合烂熟于胸,做到举 一反三,是学习五子棋的基本功,更是能灵活运用五种取胜技巧的基础。 4.54.5 数据流程图数据流程图 软件运行 新游戏载入游戏 选择 先行、后行 游戏难度 设置 游戏开始游戏开始 下棋、悔棋、 交换棋子 下棋、悔棋、 交换棋子 判断输、赢、 和棋 保存保存 退出游戏 操作 操作 操作操作 判 断 判 断 操作 操作 操作 图 2 数据流程图 11 5 5 设计分析设计分析 5.15.1 游戏运行说明游戏运行说明 想要运行游戏,可以用 visual studio 2008 打开软件,然后按 f5 键运行。也可以打 开五子棋文-fivestone-bin-debug-fivestone.exe 运行。 5.25.2 游戏规则游戏规则 图 5-1 主界面 如图为游戏的主界面,左边的方格为棋盘,游戏的规则是在棋盘上下棋,只要由一 方先在棋盘中有五个子连线,那么该方就为赢家。 12 图 5-2 帮助 详细规则可点击图 2-2 中的规则查看详细规则,点击后会出现如图 5-3 所示: 图 5-3 五子棋规则 5.35.3 游戏操作游戏操作 (1):游戏开始 想开始游戏,可以直接点击棋盘开始下棋。默认是玩家先行。 如图 5-4 也可以在在菜单栏中的设置里面选择电脑先行。 图 5-4 设置 (2) 游戏难度 如图 5-5,在级别中也可以设置电脑的强度,然后,则可以供不同程度的人来玩。 这样不仅能锻炼玩家的游戏水平,也可以增加很多趣味性。 图 5-5 级别 (3)游戏保存 如果一盘棋没有完成,然后由于玩家时间有限,急于去忙其他的事情,则可以,保 存该盘棋的进度。然后下次运行该程序的时候,再点击文件,点击载入然后选择上次 保存的进度,则可以继续下棋。 13 图 5-6 文件 (4)悔棋 有的时候,会不小心点错地方,从而导致下错棋,本系统中还有个悔棋功能如图 5- 7 所示,如果在不小心下错棋的时候则单击可以悔棋。 当然这个功能还有一个另外的用法,单击后退以后,再单击前进,然后,你之前所 下的棋子,会一步步出现,这样就可以欣赏刚才自己下棋的风采了。 图 5-7 悔棋 5.45.4 游戏玩法游戏玩法 游戏的玩法,在操作里面已经差不多介绍完毕,当然,本系统还有个比较趣味的设 置就是在级别里面的棋子兑换功能,如图 5-6 所示,这样在你即将输掉比赛的时候,可 以点击棋子兑换,然后,就可以很轻松的获胜了。当然这仅供娱乐,不建议使用。 图 5-7 棋子兑换 在帮助里面还有一个关于点击后则会关于,没有什么别的用途,只是介绍了一下自 己的信息,如图 5-8 所示 图 5-8 本人信息 14 5.55.5 主要模块分析主要模块分析 在本游戏中,最难实现的也是最主要的模块就是在棋盘上绘制棋子的实现、棋子输 赢的判断实现、悔棋类的实现。 .1 下棋类的实现下棋类的实现 下棋类的实现主要是通过,g.drawimage(image,x,y)方法。image 是图片的名称, 然后 x,y 是要在棋盘绘制棋子的位置。 而首先,是要把图片加载到 resources.resx 如图 5-9 所示 图 5-9 资源 然后通过 global:fivestone.properties.resources.然后加载 resources.resx 里面的图片 就可以了。 .2 游戏输赢判断类游戏输赢判断类 当每走一步棋以后,打电脑会把你所走的棋的位置计算出来,然后,计算,如果其 在在上下方向,左右方向,斜方向,有五个颜色相同的棋子,那么则判断该颜色的棋 子获胜。 .3 悔棋类的实现悔棋类的实现 首先在窗体上放了一个 listbox 控件,然后,每走一步棋就会执行 this.listbox.items.add(“黑棋 “ + (smart.poxsequcei % 15).tostring() + “, “ + (smart.poxsequcei / 15).tostring();,然后把棋子的位置信息都输出到 listbox 里面。 当要悔棋的时候,则会根据 listbox 里面的位置信息,把相应的棋子绘制到棋盘里 面,从而达到悔棋的效果。 15 6 6代码设计代码设计 6.16.1 打开保存代码打开保存代码 作为一个游戏,游戏的娱乐是必不可少的,但是,现在人们的生活节奏太快,往往 没有那么多时间去玩一个游戏,这就要求游戏中有个必不可少的操作就是能保存自己 所玩的游戏。这样当忙的时候就可以先把游戏保存,然后等有空闲的时候,在可以加 载,自己以前所玩的游戏,而这部分比较人性化的代码是: (1)保存代码: try this.savefiledialog.showdialog(); if (this.savefiledialog.filename.trim() = null) return; streamwrite = new streamwriter(this.savefiledialog.filename); for (int i = 0; i 14 | y 14) continue; temppoxcount * 2 = x; temppoxcount * 2 + 1 = y; count+; if (count = 1) diminsion3 = 0; diminsion4 = 1; if (sediminsion4 = 1) sediminsion3 = 0; sediminsion4 = 1; diminsionsum3 += diminsion3; diminsionsum4 += diminsion4; sediminsionsum3 += sediminsion3; sediminsionsum4 += sediminsion4; 18 / count = 0; diminsion3 = 0; diminsion4 = 0; sediminsion3 = 0; sediminsion4 = 0; for (int x = i - 4; x 14 | y 14) continue; temppoxcount * 2 = x; temppoxcount * 2 + 1 = y; count+; if (count = 1) diminsion3 = 0; diminsion4 = 1; if (sediminsion4 = 1) sediminsion3 = 0; sediminsion4 = 1; diminsionsum3 += diminsion3; diminsionsum4 += diminsion4; sediminsionsum3 += sediminsion3; 19 sediminsionsum4 += sediminsion4; / - count = 0; diminsion3 = 0; diminsion4 = 0; sediminsion3 = 0; sediminsion4 = 0; for (int x = i - 4; x 14 | y 14) continue; temppoxcount * 2 = x; temppoxcount * 2 + 1 = y; count+; if (count = 1) diminsion3 = 0; diminsion4 = 1; if (sediminsion4 = 1) sediminsion3 = 0; sediminsion4 = 1; diminsionsum3 += diminsion3; diminsionsum4 += diminsion4; sediminsionsum3 += sediminsion3; 20 sediminsionsum4 += sediminsion4; / | count = 0; diminsion3 = 0; diminsion4 = 0; sediminsion3 = 0; sediminsion4 = 0; for (int y = j - 4; y 14 | y 14) continue; temppoxcount * 2 = x; temppoxcount * 2 + 1 = y; count+; if (count = 1) diminsion3 = 0; diminsion4 = 1; if (sediminsion4 = 1) sediminsion3 = 0; sediminsion4 = 1; diminsionsum3 += diminsion3; diminsionsum4 += diminsion4; sediminsionsum3 += sediminsion3; 21 sediminsionsum4 += sediminsion4; / #endregion #region /各方向字符串拼接6 count = 0; diminsion6_3 = 0; diminsion6_4 = 0; sediminsion6_3 = 0; sediminsion6_4 = 0; / / for (int x = i - 4; x 14 | y 14) continue; temppoxcount * 2 = x; temppoxcount * 2 + 1 = y; count+; if (count = 1) diminsion6_3 = 0; diminsion6_4 = 1; if (sediminsion6_4 = 1) sediminsion6_3 = 0; sediminsion6_4 = 1; diminsionsum6_3 += diminsion6_3; diminsionsum6_4 += diminsion6_4; sediminsionsum6_3 += sediminsion6_3; sediminsionsum6_4 += sediminsion6_4; / count = 0; diminsion6_3 = 0; diminsion6_4 = 0; sediminsion6_3 = 0; sediminsion6_4 = 0; for (int x = i - 4; x 14 | y 14) continue; temppoxcount * 2 = x; temppoxcount * 2 + 1 = y; count+; if (count = 1) diminsion6_3 = 0; diminsion6_4 = 1; 23 6.36.3 悔棋的代码悔棋的代码 #region if (listbox.selectedindex 0) listbox.selectedindex = listbox.items.count - 1; smart.sequce = listbox.items.count; this.hscrollbar.value = listbox.items.count; if (listbox.items.count j) e.newvalue = j; if (e.newvalue 1) e.newvalue = 1; smart.sequce = e.newvalue; if (sound) soundplayer snping = new soundplayer(global:fivestone.properties.resources.regret); snping.play(); for (int i = 0; i smart.sequce; i+) smart.poxsmart.poxsequcei = smart.poxcolori; if (sm

温馨提示

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

评论

0/150

提交评论