1、摘 要本论文设计的目的是基于TCP/IP点对点通讯技术,以VB为平台设计并实现了一个基于C/S(客户端/服务器)模式的五子棋网络游戏的总体设计方法。本设计主要是建构服务器端,采用TCP/IP网络协议,使用VB提供的Winsock控件来实现与客户端的网络通信功能。主要功能是使客户端能连接到服务器端,双方可以通过网络对战,并且能够自动判断胜负。特点是支持双方网上聊天功能,还增添了悔棋、复盘、保存棋局/聊天记录等功能。关键词:Winsock;VB;C/S工作模式;五子棋;TCP/IPAbstractThe thesis is aimed to achieve a C/S (Client/Server
2、) mode backgammon online game based on the point to point communication technology by TCP/IP, with the Microsoft Visual Basic software platform. This design main to build a server-side that applied the TCP/IP protocol as the network protocol and used the tool of Visual Basic, Winsock, to realize the
3、 network communication. The functions of the design contain Client and Server side can be connected to each other and plays the backgammon games online, then it can auto judge the victory or defeat. The designs feature is to support chats online, undo, and replay, save games and chat records.Keyword
4、s: Winsock; Microsoft Visual Basic; Client/Server mode; backgammon game; TCP/IP目录1.绪论11.1 五子棋的简介11.2 五子棋的历史与现状11.3 五子棋游戏开发意义12. 开发工具的选择32.1 开发背景与现状32.2 Visual Basic33. 网络通讯的基本原理83.1 Tcp/IP 体系结构83.1.1 Tcp/IP简介83.1.2 Tcp/IP特点83.1.3 Tcp/IP协议的应用93.2 Winsock102. 需求分析与总体设计122.1 需求分析122.1.1 五子棋功能需求122.1.2
5、五子棋的规则122.2 总体分析123. 五子棋游戏设计143.1 设计原理143.2 通讯流程143.3 算法描述163.3.1 棋盘绘制算法163.3.2 判断输赢算法173.3.3 下棋决策算法193.3.4 聊天记录管理算法203.3.5 下棋记录管理算法233.4 客户端/服务器端数据格式定义244. 游戏界面设计254.1 登陆界面设计254.2 下棋界面设计265. 软件测试295.1 问题的发现295.2 问题的解决296. 总结与体会306.1 总结306.2 体会307. 参考文献328. 致谢33附录一 程序源代码341.绪论1.1 五子棋的简介众所周知,五子棋是我国古代
6、的、传统的黑白棋种之一,大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。五子棋国际上正式称“连珠”,五子棋简单易学而又富有趣味,为大众喜爱。然而,五子棋又包含深奥的哲理和技巧,尤其是随着国际职业连珠运动的发展和竞赛规则的逐步完善,技法和战术有了很大发展,因此已不再是简单的游戏。五子棋与围棋棋子相似,围棋像军团作战,博大精深;五子棋则短兵相接,凶险复杂。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为广大人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊
7、流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。1.2 五子棋的历史与现状20世纪90年代,五子棋在我国民间迅速普及,爱好者群体不断扩大,水平不断提高,地区间的交流活动逐步增多,一些五子棋组织应运而生,许多地区举办了五子棋比赛活动。五子棋作为一个智力运动项目,它的最大价值就是为社会大多数民众休闲娱乐服务,在构建和谐社会中发挥应有的作用。随着网络时代的到来,网络五子棋游戏也随之兴起,它凭借健康、方便、互动性强、益智等诸多优点,成为一些现代人的休闲娱乐方式。1.3 五子棋游戏开发意义进入二十一世纪,电脑和网络越来越普及,五子棋这个传统娱
8、乐项目被网络数字化也是必然趋势。由于电脑的人工智能,越来越多的人能够和电脑或者联机进行对战,感受高手的思维方式和棋艺,使自己的棋术越来越精湛。由于网络的普及,高手可以通过游戏的网络对战系统上网和真人进行对弈,让人们在工作闲暇之余能够享受游戏的快乐,而且五子棋作为一款传统游戏,它是老少皆宜,潜在玩家很多,其市场前景非常广阔。在当今电脑网络密布的世界当中,一个简单高效的局域网游戏工具是如此的具有实用性,所以我们应当重视对它的相关研究与开发。2. 开发工具的选择2.1 开发背景与现状在很早以前五子棋软件就已经被开发出来了,当时的五子棋软件仅提供了“人机模式”与“双人模式”。“人机模式”是指,人与计算
9、机进行对弈,计算机按照事先编写好的算法程序来进行下棋;“双人模式”是指,两个人通过交替使用同一台计算机来进行下棋。无论是选择哪一种模式,所有的操作都必须在同一台计算机上来往完成,棋局无法在异地计算机之间来进行,故而也叫单机版五子棋软件。随着计算机网络的迅猛发展,异地计算机之间的通信变得十分便捷。这也为异地间的用户通过网络来进行下棋提供了可能。网络五子棋软件利用TCP/IP协议,在异地的玩家之间建立起TCP连接,并用它来交换棋局的各种数据信息。所以,网络五子棋软件在下棋以前必须要对相关的网络参数进行设置,才能实现玩家双方的成功连接。连接成功后,玩家双方轮流下棋,并将每一步下棋的信息通过网络传送给
10、对方,使得双方棋盘上的棋子保持一致,并且提供了“互动聊天”“悔棋”、“复盘”和“保存棋局”等功能。2.2 Visual Basic1. Visual Basic的发展 Basic是英文Beginners All-Purpose Symbol Instruction Code (初学者通用符号指令代码)的缩写,在高级语言中占有重要的地位,是专门为初学者设计的计算机语言。第一代Basic于1964年在Dartmouth 学院由John Kemeny 和Thomas设计,由于它的语法很接近人类所使用的自然语言和数学表达式,只有十几条语句,简单易用,因此受到广大计算机初学者的喜爱,很快就得到广泛的应用
11、,第二代Basic是在20世纪70年代中期到80年代中期出现的,其功能有了较大的扩充,应用范围更加广泛,主要有GWBasic和Microsoft公司的Basic(MS-Basic);第三代Basic是在80年代中期出现的结构化的True Basic、Quick Basic、Turbo Basic和Qbasic;第四代就是Visual Basic.Visual Basic(简称VB)是美国Microsoft公司推出的、专门针对32位Windows操作系统的程序设计语言,它从Basic发展到Visual Basic,经历了二十多年的历程。Visual指的是开发图形用户界面(GUI)的方法,Visu
12、al Basic在原有Basic语言的基础上进一步发展,至今包含了数百条语句、函数及关键字,其中很多都和Windows GUI有直接关系。专业人员可以用Visual Basic实现其他任何Windows编程语言的功能,而初学者只要掌握几个关键词,就可以建立实用的应用程序。Visual Basic 1.0版是1991年Microsoft公司推出的基于窗口的可视化开发工具,当时它的功能相对较少,也有一定的缺陷。但Microsoft公司凭借其强大的技术优势,经过不断努力,于1993年推出了Visual Basic 3.0,这个版本已初具规模,并进入了实用阶段,利用它可以快速创建图形用户界面和多媒体等
13、应用程序。1995年推出的Visual Basic 4.0提供了强大的数据库管理功能,使之成为管理信息系统(MIS,Management Information System)的重要开发工具。而在1998年推出的Visual Basic 6.0,则在开发环境和功能上都做了很大的完善、扩充和增强。实践证明,Visual Basic以其简单易学、功能强大和面向对象编程的优势,已经发展为快速应用程序开发(RAD,Rapid Application Development)工具的代表,受到广大专业程序设计者和计算机爱好者的普遍欢迎。2. Visual Basic应用程序的基本特点在可视化编程上,Vis
14、ual Basic已成为新一代程序设计语言的杰出代表。与传统的语言相比,Visual Basic在许多方面都有重要的改革和突破,Visual Basic有以下基本特点:(1)提供了好学易用的应用程序集成开发环境Visual Basic的集成开发环境是在Windows平台上实现的。在这个环境中,开发人员可以进行界面设计、代码编写和程序调试,直至可以把应用程序编译成可执行程序,在脱离Visual Basic的设计环境下直接运行。这个开发环境支持整个面向对象开发的全过程,具有极大的方便性和高效性。(2)面向对象的可视化设计工具在VB开发环境中,应用了面向对象的程序设计方法,即把程序和数据封装起来,视
15、为一个对象工具。每个对象都是可视的,程序员在设计时,只需要根据设计界面的要求,利用现有的对象工具,直接在屏幕上设置不同的对象(如窗口、菜单、按钮或滚动条等),并为每个对象设置属性即可,而不需要编写大量的代码去描述界面元素的外观和位置(这也就是所说的“所见即所得”)。通过对这些对象进行属性的设置和调整,就能改变对象的外观及动作的方式,这样用户可以方便地设计出美观、友好地界面,从而简化了界面设计的方法,大大提高了编程的效率。(3)事件驱动的编程机制在设计好了用户界面后,就可以编写相应的程序了。事件驱动是增强程序图形界面交互性的主要方法,是指利用用户的动作或行为控制程序运行的流向。用户的每一个动作或
16、操作行为都可以产生一个事件(如用户的键盘或鼠标操作、系统消息、程序触发等),每个事件都可驱动一段程序的运行,程序员只需编写响应用户动作的代码即可,这样编写的程序代码短、易编写、易维护,且对象之间的动作顺序可由程序的使用者灵活控制。(4)结构化的程序设计语言传统编程方法是面向过程的机制,程序是按事先设计的程序流程来运行的。程序间要求有严谨的逻辑关系,且程序长、编写难、维护难。而VB系统提供了丰富的数据类型、众多的内部函数、子程序、事件子程序和自定义函数等模块,各个子程序模块之间彼此独立,也可以相互联系,从而形成了结构化程序,简单易学。(5)支持多种数据库访问系统Visual Basic可以利用数
17、据控制或通过ODBC访问数据库,获得后台的数据源支持,从而使Visual Basic前台的界面与数据处理功能结合起来,扩大Visual Basic的应用范围。Visual Basic可以访问的数据库主要有Microsoft SQL Server、Access、dBASE、FoxBASE和Paradox等,也可以访问Microsoft Excel、Lotus1-2-3等多种电子表格。Visual Basic还可以利用对象的链接与嵌入技术(OLE),开发出具有图、文、声、像、Web等对象合成的应用程序,并可以方便地使用标准地Active部件,调用标准的接口,用于Web或其他支持这一技术的过程中。V
18、isual Basic采用了部件编程的思想,在Visual Basic中创建的部件可以自用,也可以在其他开发环境(如VC)中使用,还可以引用其他开发工具建立的部件。由于具有接口继承性,所以通过部件编程,可以在Visual Basic中实现代码重用。在数据库应用方面,增加了ADO功能,Visual Basic不仅可以支持本地数据库,而且还可以链接远程数据服务器,大大增强了数据处理能力;在Internet应用方面,Visual Basic可以通过文档或程序访问Internet,创建Internet服务器应用程序,支持DHTML(动态HTML技术)和Web程序发布等。(6)OLE和Active技术的
19、应用OLE(Object Link&Embed)技术是指对象的链接与嵌入技术,能够用于开发集声音、图像、动画、字处理和Web对象等于一体的应用程序。Active技术可以使开发人员摆脱特定语言的束缚,方便地使用标准地Active部件,调用标准地接口,实现特定的功能。OLE技术是VB的核心,Active是OLE的发展。(7)增强的网络功能Visual Basic最重要的特征之一,是提供了DHTML设计工具。这种技术可以使Web页面设计者动态地创建和编辑页面,使用户能够在VB中开发出多功能地网络应用软件。(8)多个应用程序向导VB的应用程序向导可以自动创建不同类型、不同功能的应用程序,其中包括应用程
20、序向导、安装向导、数据对象向导、数据窗体向导、IIS应用程序和DHTML等(9)完备的联机帮助系统与Windows环境下的软件一样,在VB中随时可以利用菜单功能键得到所需要的帮助信息。帮助窗口的信息和示例代码可以进行复制、粘贴,为用户学习和使用VB提供了捷径。3. Visual Basic 6.0Visual Basic 6.0是在Visual Basic 5.0的基础上发展起来的,是Visual Basic 5.0的升级版本。较之Visual Basic 4.0,Visual Basic 5.0的更新面很广,更新幅度也很大。从Visual Basic 5.0开始,ActiveX就一炮打响,并
21、增加了真正的可执行的本地代码编译,比Visual Basic 4.0的伪代码编译快20倍。而相比Visual Basic5.0,Visual Basic 6.0也增加了很多值得称道的新增功能。Visual Basic 6.0现有以下三个版本:(1)学习版(Leaning Edition):学习版主要是针对Visual Basic的初学者而设计的,可以开发基于Windows的应用程序,包括创建Windows应用程序所需的内部控件以及数据网络、数据绑定等控件,也为用户提供了联机帮助系统。对界面要求不高、计算量不大的项目,学习版是可以胜任的。此外,学习版经济实惠、易学易用,是初学Visual Bas
22、ic用户的良好选择。(2)专业版(Professional Edition):专业版是专业人员提供了一整套功能完备的开发工具,该版本包括学习版中的全部内容,又增加了立体控件、动画按钮、通信控件、进度条、工具条及Internet控件等开发应用程序所需要的全套工具,同时还加强了创建ActiveX部件应用程序和ActiveX部件等方面的功能。开发在单机上运行的应用程序,专业版是足够的。它的使用对象是具有一定Visual Basic编程经验的软件开发人员,但初学者从专业版入手也不会遇到多大困难。(3)企业版(Enterprise Edition):企业版使专业编程人员能够以组的形式开发功能强大的分布式
23、应用程序。该版本包括专业版的全部功能,是Visual Basic最强的版本。较之专业版,企业版增加了用于组织企业环境中各部件的对象知识库、自动化管理器、数据库管理工具和控制工具、客户机/服务器开发工具等功能。利用企业版能够创建远程自动对象链接和嵌入(OLE)服务器应用程序,可以通过网络远程调用。企业版为软件开发团队开发大型的网络环境的应用软件体系提供了强有力的支持,本系统就是立足于企业版进行开发的。3. 网络通讯的基本原理 3.1 Tcp/IP 体系结构3.1.1 Tcp/IP简介TCP/IP 作为 Internet的核心协议,通过近二十多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目
24、前已成为事实上的国际标准。TCP/IP 协议集确立了 Internet 的技术基础。TCP/IP 协议主要作用于 OSI 网络参考模型中的网络层(第3层)、传输层(第4层)和应用层(第7层)。数据链路层(第2层)的功能主要应用于其它协议如以太网(Ethernet)、ATM、帧中继(Frame Relay),以及多数供应商特定协议等。TCP/IP 充分支持所有通用第2层协议。TCP/IP 组中的应用程序通常直接运行于传输层协议 TCP 或 UDP 上面,并不需要表示层(第6层)和会话层(第5层)的支持。3.1.2 Tcp/IP特点TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协
25、议(IP)和物理接口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的应用程序才能设计,所以要使用套接字(socket)来设计。TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都
26、呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 图 3-1-2 TCP/IP参考模型应用层:在TCP/IP模型的最上层是应用层(Application Layer),它包含所有的高层的协议。高层协议有:虚拟终端协议TELNET、文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等等。传输层:传输层位于互联网层的上一层,传输层的协议只存在于主机之中,它的功能是提供主机之间进程与进程的有效数据传输。传输层使用端口号向应用层中不同进程提供与该端口号相应的服务。在传输层中有TCP协议(Transmission Control Proto
27、col)即传输控制协议,和UDP协议(User Datagram Protocol)即用户数据报协议。互连网络层:它是整个体系结构的关键部分。它的功能是负责路由选择合适的通信节点,使数据分组能从源主机发往目的主机。这些分组到达目的主机的顺序和发送的顺序可能不同,因此如果需要按顺序发送和接收时,高层必须对分组进行排序。网络接口层(主机-网络层):接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。TCP协议是建立在IP协议之上的面向连接的端到端的通信协议。由于IP协议是无
28、连接的不可靠的协议,IP协议不可能提供任何可靠性保证机制,所以,TCP协议的可靠性完全由自身实现。TCP协议采取了确认、超时重发、流量控制等各种保证可靠性的技术和措施。TCP和IP两种协议结合在一起,实现了传输数据的可靠方法。它的安全和可靠性比UDP要高出很多。由于网络五子棋对实时性要求较高,综合考虑的结果,本软件应使用TCP/IP协议。3.1.3 Tcp/IP协议的应用TCP(Transfer Control Protocol)允许你创建并维护一个与远程计算机的连接,使用该连接,两台计算机之间就可以交换数据了。如果你在创建一个客户应用程序,你必须知道服务器计算机的名字T注:建议用IP地址或I
29、P地址(RemoteHost属性),以及要监听的端口号(RemotePort属性),然后调用Connect方法。如果你在创建一个服务器应用程序,设置要监听的端口号(LocalPort属性),调用Listen方法。当客户建立连接请求时,产生ConnectionRequest事件。要完成该连接,在ConnectionRequest事件中调用Accept方法。一旦建立了连接,两台计算机之间就可以发送和接受数据了。要发送数据,调用SendData方法。当接受数据时,产生DataArrival事件。在DataArrival事件中调用GetData方法来检取数据。3.2 Winsock1.TCP协议:TC
30、P(Transfer Control Protocol)是传输控制协议的简称,是基于连接的协议,在数据传输之前必须先建立连接。通过TCP协议建立的是客户/服务器通信方式。 2.UDP协议: UDP(User Data Protocol)是用户数据文报协议的简称,两台计算机之间的传输类似于传递邮件;两者之间没有明确的连接,可作为服务器,也可作为客户机。 使用UDP协议建立对等通信和通过TCP建立客户/服务器通信的方法略有不同,它不需要建立客户和服务器,而是建立对等通信。 3. Winsock属性: LocalPort:返回或者设置所用到的本端口;如果指定的是端口 0,就使用一个随机端口。 Pro
31、tocol:返回或设置Winsock所用的协议是TCP或UDP。 State:返回控件的状态,用枚举类型来表示。 常数值描述SckClosed0缺省值,关闭SckOpen1打开SckListening2侦听SckConnectionPending3连接挂起SckResolvingHos4识别主机SckHostResolved5已识别主机SckConnecting6正在连接SckConnected7已连接SckClosing8同级人员正在关闭连接SckError9错误表1 Winsock控件的State属性及其描述4. Winsock方法: Listen:用于服务器程序,等待客户访问。 Conn
32、ect:用于向远程主机发出连接请求 Accept:用于接受一个连接请求 Senddata: 此方法用于发送数据 Getdata: 用来取得接收到的数据 格式:Winsock对象.getdata 变量 ,数据类型 ,最大长度 Close: 关闭当前连接 格式:Winsock对象.close 5.事件: DataArrival:新数据到达时出现;获取一个 GetData 调用中的全部数据。 ConnectionRequest:当远程计算机请求连接时接受连接请求。 SendComplete :在完成一个发送操作时出现 。 SendProgress :在发送数据期间出现 。 Close :当远程计算机
33、关闭连接时出现。2.需求分析与总体设计2.1 需求分析软件的需求分析是软件生存期中重要的一步,也是决定性的一步。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。在此阶段,了解用户要求本软件必须满足的所有功能和限制,以及用户对软件功能和性能的要求,弄清用户想要软件“做什么”,准确地表达用户的要求。2.1.1 五子棋功能需求能通过网络进行下棋符合五子棋的基本规则提供 “复盘”、“悔棋”等功能提供玩家之间的聊天功能有背景音乐提供保存聊天记录和下棋记录的功能2.1.2 五子棋的规则规则没有依照国际的规定,所以在19x19的棋盘上,只要任一方先连成五颗
34、就获胜。当主机的人为先手,下黑子。2.2 总体分析在需求分析结束后,已经弄清楚了软件的各种需求,较好地解决了用户要软件“做什么”的问题,接下来就将着手实现软件的需求,即要着手解决“怎么做”的问题。在这个阶段着重实现需求的程序模块设计问题,并将需求转化为软件的系统结构,进行模块的划分,确定每个模块的功能、接口及模块之间的调用关系。根据需求分析制订出整个软件的系统结构图,如图2.2所示:图2-23. 五子棋游戏设计3.1 设计原理使用VB提供的Winsock控件来实现网络通信,采用的网络协议是Tcp/IP协议,包括服务器端和客户端,游戏双方一方先运行服务器端,另一方运行客户端,连接到服务器端,双方
35、通过网络对战,能够自动判断胜负,还支持双方聊天的功能。该游戏的界面能显示目前的对弈状态,同时能显示对弈双方之间的聊天信息。通过它建立起服务器与客户端之间的连接,服务器端负责接受客户端的连接和处理客户端的数据,客户端负责连接到服务器并处理游戏时的交互。流程图如下:图3.13.2通讯流程1.服务器端程序实现过程:(1)服务器程序必须设置好LocalPort属性,作为侦听端口,该值为一个整数(只要是一个其它TCP/IP应用程序没有使用过的值即可)。 (2)使用Listen方法进入侦听状态,等待客户机程序的连接请求。 (3)客户机程序发出连接请求,使服务器程序产生ConnectionRequest事件
36、,该事件得到一个参数requestID。 (4)服务器程序用Accept方法接受客户机程序的requestID请求。这样,服务器程序就可以用SendData方法发送数据了。Accept方法必须用上一步得到的requestID作为其参数。 (5)当服务器程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。 (6)如果接受到Close事件,则用Close方法关闭TCP/IP连接。 2.客户端程序的实现过程是: (1) 客户程序设置Remotehost属性,以便指定运行服务器程序的主机 名,该字符串可在“控制
37、面板|网络|标识|计算机名”中查到。 (2) 设置RemotePort属性,以便指定服务器程序的侦听端口。 (3)使用Connect方法,向服务器提出连接请求。 (4)服务器接受客户机程序的请求,客户机程序产生Connect事件,就可以用SendData方法发送数据了。 (5)当客户机程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。 (6)如果接受到Close事件,则用Close方法关闭连接。3.下图为TCP协议通信流程3.3 算法描述3.3.1 棋盘绘制算法绘制一个19x19的棋盘Public S
38、ub growQp() Picture1.Cls Picture1.Left = 0 Picture1.Top = 0 Picture1.Width = 10000 Picture1.Height = 10000 Picture1.Refresh x = 200 y = 200 While x 9200 x = x + 500 Picture1.Line (x, 200)-(x, 9700) Wend While y 9200 y = y + 500 Picture1.Line (200, y)-(9700, y) Wend Picture1.Line (100, 100)-(100, 980
39、0) Picture1.Line (100, 100)-(9800, 100) Picture1.Line (100, 9800)-(9800, 9800) Picture1.Line (9800, 100)-(9800, 9800) Picture1.Line (200, 200)-(9700, 200) Picture1.Line (200, 200)-(200, 9700) Picture1.Line (9700, 200)-(9700, 9700) Picture1.Line (200, 9700)-(9700, 9700) blackwin = False whitewin = Fa
40、lseEnd Sub3.3.2 判断输赢算法Private Sub judblack() 判断黑是否获胜 Dim i As Single Dim j As Single For i = 0 To 19 For j = 0 To 19 If table(i, j) * table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j + 4) = 1 Then MsgBox black win.: blackwin = True ElseIf table(i, j) * table(i + 1, j) * table(i + 2,
41、j) * table(i + 3, j) * table(i + 4, j) = 1 Then MsgBox black win.: blackwin = True ElseIf table(i, j) * table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i + 4, j + 4) = 1 Then MsgBox black win.: blackwin = True ElseIf table(i, j) * table(i - 1, j + 1) * table(i - 2, j + 2) * t
42、able(i - 3, j + 3) * table(i - 4, j + 4) = 1 Then MsgBox black win.: blackwin = True End If Next j Next iEnd SubPrivate Sub judwhite() 判断白是否获胜 Dim i As Single Dim j As Single For i = 0 To 19 For j = 0 To 19 If table(i, j) * table(i, j + 1) * table(i, j + 2) * table(i, j + 3) * table(i, j + 4) = 32 T
43、hen MsgBox white win.: whitewin = True ElseIf table(i, j) * table(i + 1, j) * table(i + 2, j) * table(i + 3, j) * table(i + 4, j) = 32 Then MsgBox white win.: whitewin = True ElseIf table(i, j) * table(i + 1, j + 1) * table(i + 2, j + 2) * table(i + 3, j + 3) * table(i + 4, j + 4) = 32 Then MsgBox w
44、hite win.: whitewin = True ElseIf table(i, j) * table(i - 1, j + 1) * table(i - 2, j + 2) * table(i - 3, j + 3) * table(i - 4, j + 4) = 32 Then MsgBox white win.: whitewin = True End If Next j Next iEnd Sub3.3.3 下棋决策算法Private Sub picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y
45、 As Single) 人走 Dim a As Single Dim b As Single If sckServer.State = 0 Then MsgBox 尚未连接,不能下棋! ElseIf blackturn = False Then If (x - 200) Mod 500 250 Then a = x + 500 - (x - 200) Mod 500 End If If (y - 200) Mod 500 250 Then b = y + 500 - (y - 200) Mod 500 End If i = (a - 200) / 500 j = (b - 200) / 500 上面是鼠标在棋盘所点的具体位置转换成坐标位置 If (table(i, j) = 0) Then sendstr = growQdata(i, j, vbWhite) sckServer.SendData sendstr blackturn = True huiqi.Enabled = True intstep = intstep + 1 intx(intstep) =
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922