1、本科毕业论文(20 届)网络对战五子棋平台的设计与实现所在学院专业班级 计算机科学与技术学生姓名指导教师完成日期摘要五子棋游戏以其优秀的人工智能深受广大玩家的喜爱,而对于初步探究网络编成的编程爱好者来说,编制五子棋程序因其规则简单而大受欢迎,然而它却要求程序员对五子棋规则有相当深入的了解。程序员考虑得越周到,其五子棋程序就越智能。五子棋游戏软件设计的主要内容是:根据五子棋的基本规则,要让对方客户端知道该在哪一点下子,就要根据盘面的形势,并把棋盘棋子的重新绘制绘制,也就是更新该点的位置,然后再通过监听网络传递的消息,直到新的位置放在棋盘的什么位置上,在进行修改,并通过计算,得出玩家是否获得胜利.
2、,因此玩家就能反复的进行联机游戏。本文论述了采用联机对战的方式体现出五子棋程序的分析与设计,并采用面向对象的开发工具 C#来具体实现。关键字:Socket ;C/S ;五子棋;网络对弈;C#AbstractGobang game with excellent artificial intelligence by the vast number of players who, for the initial research network organization programming enthusiasts, Gobang procedures for the preparation of
3、 the rules simple and popular, but it requires programmer to Gobang game has a deep understanding of the rules. Other thoughtful consideration they treat their Gobang game procedures more wisdom.Gobang game software design is the main content: According Gobang basic rules to know each others custome
4、rs - in violation of the West, we must under Permian situation, and the board pawn re-mapping mapping, that is updating the point position, and then through the monitoring network news until the new location on the board what position, Following changes, and through the calculation, resulting in pla
5、yers is victory. , the on-line game players can repeatedly.This article discusses the use of on-line way reflect those Gobang procedures analysis and design, object-oriented development tools and the adoption of specific C# to achieve.Key Words : Socket; C/S; Gobang; play chess on network,C#目 录1 绪论
6、.51.1 选题背景和意义 .51.2 国内外研究现状和发展趋势 .51.3 研究内容与目标 .62 相关理论与技术 .72.1 五子棋简介 .72.2 相关技术简介 .72.2.1 C/S 体系结构 .72.2.2 SOCKET 简介 .82.2.3 面向对象的理论知识 .102.2.4 C#.NET 相关知识介绍 .103 系统的分析与设计 .113.1 需求分析 .113.2 功能分析 .113.3 运行环境 .124 系统的实现 .124.1 概要设计 .124.2 流程图 .134.3 程序详细设计 .145 总结 .31致谢 .31参考文献 .321 绪论1.1 选题背景和意义五子
7、棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。五
8、子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜),于 1688 年至 1704 年的日本元禄时代传到日本的。到日本明治 32年(公元 1899 年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋
9、一方的限制),例如,1899 年规定,禁止黑白双方走“双三”;1903 年规定,只禁止黑方走“双三”;1912 年规定,黑方被迫走“双三”亦算输;1916 年规定,黑方不许走“长连”;1918 年规定,黑方不许走“四、三、三”;1931 年规定,黑方不许走“双四”,并规定将 1919 的围棋盘改为1515 的连珠专用棋盘。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。1.2 国内外研究现状和发展趋势电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年
10、销售额超过好莱坞的全年收入。互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展现的潜能,改变了单机版游戏固定、呆板、与机器对话的状况。网络游戏的这些优势不仅使其在电脑游戏行业中异军突起并在某种程度上取代了单机版游戏,而且成为网络业三大(网上金融、网上教育和网络游戏)赢利且利润优厚的领域之一。网络作为一种新兴的传播方式,主要包括三大内容:娱乐、资讯、通讯。提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念2但随着科技的发展,游戏娱乐产业也在成长3目前,国内
11、的游戏娱乐产业正处于起步阶段,特点表现为:第一,它是一种文化的传播。娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放已被电脑网络所取代4。第二,网络游戏加强了人与人的沟通。第三,网络游戏具有一定的教育意义5。网络游戏所具有的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。网络无国界,游戏在网络文化产业世界的发展中地位会越来越高。目前在国外,休闲游戏如棋类等,玩家的年龄跨度非常大,这和我国目前网游市场以青少年为主要消费人群的状况截然不同7。其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。同时,这也涉及到一个企业开发的能力
12、。娱乐产业发展到一定程度,通过不断锻炼和经验的积累,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者 。就国内的发展来看,最近這两三年内国内的游戏公司如雨后春笋般的成立,所開發或代理的网络游戏更是不胜枚举。以全球游戏业界的发展来看,這几年韩国的表现最为突出,特別是在网络游戏的技术研发兴游戏制作,其所发行的网络游戏更成为全球游戏产业重要的指标之一。去年在美国洛杉矶所举行的 E3(Electronic Entertainment Exposition)展中,已经有几家的韩国厂商挤入世界第一线的游戏开发厂商之列。近几年来,由于 3D 硬体绘图技术的突破,使得即时描绘的书面越来越精致,而且
13、 3D 遊戏性更多元化更逼近真实世界,因此在遊戏产业中,3D 游戏已经逐渐取代 2D 游戏为游戏市场的主流,即使是网络游戏,也慢慢趋向 3D 化。然而游戏3D 化将会带来的游戏开发上的困难等问题,这些问题以后都需要逐步解决。 1.3 研究内容与目标实验要求如下:(1) 玩家能通过局域网进行局域网对战。(2) 实现游戏员的网络对话。(3) 游戏规则:在棋盘上的行、列、对角线上连续放五个旗子的一方获胜。本程序旨在用 C#语言实现一个基于.NET 架构的 C/S 模式的五子棋局域网对战游戏,玩家作为客户端通过服务器端与其它玩家进行对战,聊天等功能。界面使用 VS2008 WindowForm 窗体实
14、现,界面美观,操作简单,可行性强。2相关理论与技术2.1 五子棋简介(1)棋盘,棋子:1、棋盘为十五路,正中一点为“天元”,周围四点为小星。2、棋子分黑白两色,黑子 113 枚,白子 112 枚,共 225 枚。(2)比赛规则:1、黑先白后,从棋盘任意位置开始落子。然后执白棋的一方在黑棋周围的交叉点上落子。以此类推,黑白交替落子。2、最先在横向,竖向,斜向形成连续的相同色五个棋子的一方为胜。本文所论述的联机五子棋系统就是依照这种方式进行的。2.2 相关技术简介2.2.1 C/S 体系结构C/S 结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将
15、任务合理分配到 Client 端和 Server端来实现,降低了系统的通讯开销。(Client/Server 或客户/服务器模式):Client 和 Server 常常分别处在相距很远的两台计算机上,Client 程序的任务是将用户的要求提交给 Server 程序,再将 Server 程序返回的结果以特定的形式显示给用户;Server 程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成 DBMS 的核心功
16、能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。C/S 结构的优点是能充分发挥客户端 PC 的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。C/S 编程模式概括如下:服务器端:打开通信道路,告诉本地机器,愿意在该通道上接受客户请求监听,等待客户请求接受请求,创建专用链接进行读写处理完毕,关闭专用链接关闭通信通道(当然其中监听到关闭专用链接可以重复循环)。客户端:打开通讯道路,链接服务器数据交互“-关闭信道。2.2.2 SOCKET 简介Socket 代表了一种文件描述符;这个描述符则是用于网络访问的。其实,Socket 可以象流
17、Stream 一样被视为一个数据通道,这个通道架设在应用程序端(客户端)和远程服务器端之间,而后,数据的读取(接受)和写入(发送)均针对这个通道来进行。在应用程序端或者服务器端创建了 Socket 对象之后,就可以使用 Send/SendTo 方法将数据发送到连接的 Socket,或者使用Receive/Receive From 方法接受来自连接 Socket 的数据。Socket 通讯方式:同步:客户端在发送请求之后必须等到服务器回应之后才可以发送系一条请求。串行运行。异步:客户端请求之后,不必等到服务器回应之后就可以发送下一条请求。并行运行。用 Socket 访问网络的基本步骤:a.建立一
18、个套接字b.绑定本机的 IP 和端口c.如果是 TCP,因为是面向连接的,所以要利用 ListenO()方法来监听网络上是否有人给自己发东西;如果是 UDP,因为是无连接的,所以来这不拒。d.TCP 情况下,如果监听到一个连接,就可以使用 accept 来接受这个连接,然后就可以利用 Send/Receive 来执行操作了。而 UDP,则不需要 accept,直接用 SendTo/ReceiveFrom 来执行操作。e.如果你不想继续发送和接受了,就可以使用 close 来关闭连接在 TCP/IP 网络中,IP 网络交互分类两大类:面向连接的交互和面向唔连接的交互。Socket 面向两种连接的
19、通讯图如下:服务器方. 建立连接服务请求/应答面向连接的套接字系统调用时序Socket()建立流式套接字,返回套接字号 sBind(),将套接字 s 与本地地址相连Listen(),通知 TCP,服务器准备好接受连接accept(),接受连接,它等待客户的连接.连接建立,accept()返回,得到新的数据套接字,如 nsRecv()/send(),在套接字 ns 上读/写数据,直到数据交换完Closesocket(),关闭套接字 nsClosesocket(),关闭最初套接字 s,服务结束Socket(),建立流式套接字,返回套接字号 sConnect(),将套接字 s 与远地主机连接Send
20、()/recv(),在套接字 s 上写/ 读数据,直到数据交换完Closesocket(),关闭套接字 s,结束 TCP 对话服务器/客户方 服务器/客户方数据报文无连接的套接字系统调用时序2.2.3 面向对象的理论知识面向对象方法是一种运用对象,类,封装,继承,多态和消息等概念来构造,测试,重构软件的方法。面向对象方法是一种以知识为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和加空间结构上的不一致带来的问题。简言之,面向对象就是面向事物本身,面向对象的分析古城就是认识客观世界的过程。面向对
21、象方法从从对象出发,发展出对象,类,消息,继承等概念。面向对象的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。2.2.4 C#.NET 相关知识介绍C#是微软公司发布的一种面向对象的、运行于 .NET Framework 之上的高级程序设计语言。C#是一种安全的、稳定的、简单的、优雅的,由 C 和 C+衍生出来的面向对象的编程语言。它在继承 C 和 C+强大功能的同时去掉了一些它们的Socket()建立流式套接字,返回套接字 sBind()将套接字 s 与本地地址绑定Closesocket(),关闭最初套接字 s,服务结束ReceiveFrom/SendTo(),通过套接字 s 收发报文Socket()建立流式套接字,返回套接字 sBind()将套接字 s 与本地地址绑定ReceiveFrom/SendTo(),通过套接字 s 收发报文Closescoket(),关闭最初套接字,服务结束