网络对战五子棋_第1页
网络对战五子棋_第2页
网络对战五子棋_第3页
网络对战五子棋_第4页
网络对战五子棋_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文(设计)题目:网络对战五子棋学院:专业班级:学号:学生姓名:指导教师姓名:指导教师职称:年月日摘要五子棋游戏以其优秀的人工智能深受广大玩家的喜爱,而对于初步探究网络编成的编程爱好者来说,编制五子棋程序因其规则简单而大受欢迎,然而它却要求程序员对五子棋规则有相当深入的了解。程序员考虑得越周到,其五子棋程序就越智能。

五子棋游戏软件设计的主要内容是:根据五子棋的基本规则,要让对方客户端知道该在哪一点下子,就要根据盘面的形势,并把棋盘棋子的重新绘制绘制,也就是更新该点的位置,然后再通过监听网络传递的消息,直到新的位置放在棋盘的什么位置上,在进行修改,并通过计算,得出玩家是否获得胜利.,因此玩家就能反复的进行联机游戏。本文论述了采用联机对战的方式体现出五子棋程序的分析与设计,并采用面向对象的开发工具C#来具体实现。关键字:Socket

;C/S;五子棋;网络对弈;C#AbstractGobanggamewithexcellentartificialintelligencebythevastnumberofplayerswho,fortheinitialresearchnetworkorganizationprogrammingenthusiasts,Gobangproceduresforthepreparationoftherulessimpleandpopular,butitrequiresprogrammertoGobanggamehasadeepunderstandingoftherules.OtherthoughtfulconsiderationtheytreattheirGobanggameproceduresmorewisdom.Gobanggamesoftwaredesignisthemaincontent:AccordingGobangbasicrulestoknoweachother'scustomers-inviolationoftheWest,wemustunderPermiansituation,andtheboardpawnre-mappingmapping,thatisupdatingthepointposition,andthenthroughthemonitoringnetworknewsuntilthenewlocationontheboardwhatposition,Followingchanges,andthroughthecalculation,resultinginplayersisvictory.,theon-linegameplayerscanrepeatedly.Thisarticlediscussestheuseofon-linewayreflectthoseGobangproceduresanalysisanddesign,object-orienteddevelopmenttoolsandtheadoptionofspecificC#toachieve.KeyWords:Socket;

C/S;

Gobang;

play

chess

on

network,C#目录TOC\o"1-3"\h\u79261绪论 594111.1选题背景和意义 5105311.2国内外研究现状和发展趋势 539941.3研究内容与目标 688662相关理论与技术 7293632.1五子棋简介 745272.2相关技术简介 7182062.2.1C/S体系结构 7286342.2.2SOCKET简介 8223572.2.3面向对象的理论知识 10223572.2.4C#.NET相关知识介绍 10229203系统的分析与设计 11203453.1需求分析 11296213.2功能分析 11168383.3运行环境 121184系统的实现 12323024.1概要设计 12162894.2流程图 13232324.3程序详细设计 1456555总结 3121058致谢 316635参考文献 321绪论1.1选题背景和意义五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。

五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜),于1688年至1704年的日本元禄时代传到日本的。到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋一方的限制),例如,1899年规定,禁止黑白双方走“双三”;1903年规定,只禁止黑方走“双三”;1912年规定,黑方被迫走“双三”亦算输;1916年规定,黑方不许走“长连”;1918年规定,黑方不许走“四、三、三”;1931年规定,黑方不许走“双四”,并规定将19×19的围棋盘改为15×15的连珠专用棋盘。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。1.2国内外研究现状和发展趋势电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展现的潜能,改变了单机版游戏固定、呆板、与机器对话的状况。网络游戏的这些优势不仅使其在电脑游戏行业中异军突起并在某种程度上取代了单机版游戏,而且成为网络业三大(网上金融、网上教育和网络游戏)赢利且利润优厚的领域之一。网络作为一种新兴的传播方式,主要包括三大内容:娱乐、资讯、通讯。提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念[2]但随着科技的发展,游戏娱乐产业也在成长[3]目前,国内的游戏娱乐产业正处于起步阶段,特点表现为:第一,它是一种文化的传播。娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放已被电脑网络所取代[4]。第二,网络游戏加强了人与人的沟通。第三,网络游戏具有一定的教育意义[5]。网络游戏所具有的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。网络无国界,游戏在网络文化产业世界的发展中地位会越来越高。目前在国外,休闲游戏如棋类等,玩家的年龄跨度非常大,这和我国目前网游市场以青少年为主要消费人群的状况截然不同[7]。其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。同时,这也涉及到一个企业开发的能力。娱乐产业发展到一定程度,通过不断锻炼和经验的积累,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者。就国内的发展来看,最近這两三年内国内的游戏公司如雨后春笋般的成立,所開發或代理的网络游戏更是不胜枚举。以全球游戏业界的发展来看,這几年韩国的表现最为突出,特別是在网络游戏的技术研发兴游戏制作,其所发行的网络游戏更成为全球游戏产业重要的指标之一。去年在美国洛杉矶所举行的E3(ElectronicEntertainmentExposition)展中,已经有几家的韩国厂商挤入世界第一线的游戏开发厂商之列。

近几年来,由于3D硬体绘图技术的突破,使得即时描绘的书面越来越精致,而且3D遊戏性更多元化更逼近真实世界,因此在遊戏产业中,3D游戏已经逐渐取代2D游戏为游戏市场的主流,即使是网络游戏,也慢慢趋向3D化。然而游戏3D化将会带来的游戏开发上的困难等问题,这些问题以后都需要逐步解决。1.3研究内容与目标实验要求如下:(1)玩家能通过局域网进行局域网对战。(2)实现游戏员的网络对话。(3)游戏规则:在棋盘上的行、列、对角线上连续放五个旗子的一方获胜。本程序旨在用C#语言实现一个基于.NET架构的C/S模式的五子棋局域网对战游戏,玩家作为客户端通过服务器端与其它玩家进行对战,聊天等功能。界面使用VS2008WindowForm窗体实现,界面美观,操作简单,可行性强。2.相关理论与技术2.1五子棋简介(1)棋盘,棋子:1、棋盘为十五路,正中一点为“天元”,周围四点为小星。2、棋子分黑白两色,黑子113枚,白子112枚,共225枚。(2)比赛规则:1、黑先白后,从棋盘任意位置开始落子。然后执白棋的一方在黑棋周围的交叉点上落子。以此类推,黑白交替落子。2、最先在横向,竖向,斜向形成连续的相同色五个棋子的一方为胜。本文所论述的联机五子棋系统就是依照这种方式进行的。2.2相关技术简介2.2.1C/S体系结构C/S结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。(Client/Server或客户/服务器模式):Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。C/S结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。C/S编程模式概括如下:服务器端:打开通信道路,告诉本地机器,愿意在该通道上接受客户请求——监听,等待客户请求——接受请求,创建专用链接进行读写——处理完毕,关闭专用链接——关闭通信通道(当然其中监听到关闭专用链接可以重复循环)。客户端:打开通讯道路,链接服务器——数据交互“-关闭信道。2.2.2SOCKET简介Socket代表了一种文件描述符;这个描述符则是用于网络访问的。其实,Socket可以象流Stream一样被视为一个数据通道,这个通道架设在应用程序端(客户端)和远程服务器端之间,而后,数据的读取(接受)和写入(发送)均针对这个通道来进行。在应用程序端或者服务器端创建了Socket对象之后,就可以使用Send/SendTo方法将数据发送到连接的Socket,或者使用Receive/ReceiveFrom方法接受来自连接Socket的数据。Socket通讯方式:同步:客户端在发送请求之后必须等到服务器回应之后才可以发送系一条请求。串行运行。异步:客户端请求之后,不必等到服务器回应之后就可以发送下一条请求。并行运行。用Socket访问网络的基本步骤:a.建立一个套接字b.绑定本机的IP和端口c.如果是TCP,因为是面向连接的,所以要利用ListenO()方法来监听网络上是否有人给自己发东西;如果是UDP,因为是无连接的,所以来这不拒。d.TCP情况下,如果监听到一个连接,就可以使用accept来接受这个连接,然后就可以利用Send/Receive来执行操作了。而UDP,则不需要accept,直接用SendTo/ReceiveFrom来执行操作。e.如果你不想继续发送和接受了,就可以使用close来关闭连接在TCP/IP网络中,IP网络交互分类两大类:面向连接的交互和面向唔连接的交互。Socket面向两种连接的通讯图如下:Socket()建立流式套接字,返回套接字号s服务器方Socket()建立流式套接字,返回套接字号sBind(),将套接字s与本地地址相连Bind(),将套接字s与本地地址相连Socket(),建立流式套接字,返回套接字号sListen(),通知TCP,服务器准备好接受连接Socket(),建立流式套接字,返回套接字号sListen(),通知TCP,服务器准备好接受连接accept(),接受连接,它等待客户的连接accept(),接受连接,它等待客户的连接Connect(),将套接字s与远地主机连接连接建立,accept()返回,得到新的数据套接字,如nsConnect(),将套接字s与远地主机连接连接建立,accept()返回,得到新的数据套接字,如ns建立连接Send()/recv(),在套接字s上写/读数据,直到数据交换完Recv()/send(),在套接字ns上读/写数据,直到数据交换完服务请求Send()/recv(),在套接字s上写/读数据,直到数据交换完Recv()/send(),在套接字ns上读/写数据,直到数据交换完/应答Closesocket(),关闭套接字s,结束TCP对话Closesocket(),关闭套接字nsClosesocket(),关闭套接字s,结束TCP对话Closesocket(),关闭套接字nsClosesocket(),关闭最初套接字s,服务结束Closesocket(),关闭最初套接字s,服务结束面向连接的套接字系统调用时序服务器/客户方服务器/客户方Socket()建立流式套接字,返回套接字sSocket()建立流式套接字,返回套接字sSocket()建立流式套接字,返回套接字sSocket()建立流式套接字,返回套接字sBind()将套接字s与本地地址绑定Bind()将套接字s与本地地址绑定Bind()将套接字s与本地地址绑定Bind()将套接字s与本地地址绑定ReceiveFrom/SendTo(),通过套接字s收发报文ReceiveFrom/SendTo(),通过套接字s收发报文ReceiveFrom/SendTo(),通过套接字s收发报文ReceiveFrom/SendTo(),通过套接字s收发报文数据报文Closescoket(),关闭最初套接字,服务结束Closesocket(),关闭最初套接字s,服务结束Closescoket(),关闭最初套接字,服务结束Closesocket(),关闭最初套接字s,服务结束无连接的套接字系统调用时序2.2.3面向对象的理论知识面向对象方法是一种运用对象,类,封装,继承,多态和消息等概念来构造,测试,重构软件的方法。面向对象方法是一种以知识为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和加空间结构上的不一致带来的问题。简言之,面向对象就是面向事物本身,面向对象的分析古城就是认识客观世界的过程。面向对象方法从从对象出发,发展出对象,类,消息,继承等概念。面向对象的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。2.2.4C#.NET相关知识介绍C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。本次设计是用C#.NET完成的,采用的是windows窗体应用程序来实现图形界面功能的,本设计主要用到的,一些控件有:ImageList,MenuStrip,button,textbox,label,等一些简单的控件。用到的主要技术就是Socket通讯,以及多线程编程。下面简单的介绍一下这些知识。ImageList控件包含ListImage对象的集合,该集合中的每个对象都可以通过其索引或关键字被引用。ImageList控件不能独立使用,只是作为一个便于向其它控件提供图象的资料中心。ImageList控件的作用象图像的储藏室,同时,它需要第二个控件显示所储存的图像。第二个控件可以是任何能显示图像Picture对象的控件,也可以是特别设计的、用于绑定ImageList控件的Windows通用控件之一。本程序中在Label,PictureBox中调用了ImageList中的图像。MenuStrip控件是VisualStudio和.NETFramework中的功能。使用该控件,可以轻松创建MicrosoftOffice中那样的菜单。MenuStrip控件支持多文档界面(MDI)和菜单合并、工具提示和溢出。您可以通过添加访问键、快捷键、选中标记、图像和分隔条,来增强菜单的可用性和可读性。MenuStrip控件取代了MainMenu控件并向其中添加了功能;但是也可选择保留MainMenu控件以备向后兼容和将来使用。3.系统的分析与设计3.1需求分析(1)满足游戏双方记录的游戏动作的基本要求。(2)满足对战双方及时通讯的基本要求。(3)满足游戏双方及时显示游戏状态的基本要求。(4)在服务器端分析双方是否胜利。3.2功能分析基于系统需求分析,该系统需要实现以下基本功能:(1)棋盘绘制:在游戏加载时,即时显示棋盘(2)对连接到客户端数据的基本要求:能够将要发送的聊天记录发送至对方手上,能够完成即时通讯。(3)实时显示:当从游戏一方将数据传入另一方系统中,将五子棋的表格进行重新的刷新,和更改。(4)通过控制鼠标点击五子棋表格:触发事件,把该动作发送到游戏另一方,并判断是否胜利。3.3运行环境系统运行环境:WindowsXP及以后版本开发环境:VS20084.系统的实现4.1概要设计本次毕业设计的内容主要是利用Socket实现一个网络对战五子棋,首先先要绘制出棋盘,然后实现Socket通讯(连接,聊天等功能),然后实现下棋功能,下棋这部分功能的实现根据Socket通讯传递的信息流控制双方该谁下棋;再通过传递过来的消息触发事件从而实现对战双方的同步显示;每走一步棋子,都要利用一个算法来判断一下有没有出现五个相同棋子连到一起的情况,及是否有人赢棋,这个算法要分两种情况,一种是黑棋,另一种是白棋,如果刚落下的棋子是黑棋,那么就要在整个棋盘上通过上下,左右,以及斜上,斜下,这几个方向来寻找看看有没有五子连在一起的情况,如果有的话,那么黑棋胜,游戏结束;如果刚落下的是白棋的话,用同样的方法判断。对战方1对战方2加载主界面(棋盘,对话窗口等)加载主界面(棋盘,对话窗口等)加载主界面(棋盘,对话窗口等)加载主界面(棋盘,对话窗口等)输入对方IP进行连接输入对方IP进行连接输入对方IP进行连接输入对方IP进行连接开始游戏开始游戏通讯对话开始游戏开始游戏通讯对话分出胜负游戏结束分出胜负游戏结束分出胜负游戏结束分出胜负游戏结束4.2流程图下面用我们用数据流图(DFD,DataFlowDiagram),也就是从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。如下图所示:准备(启动服务)开始监听准备(启动服务)开始监听等待连接开始(建立连接)开始(建立连接)连接至对方的服务端等待对方链接自己的服务端等待对方链接自己的服务端收到对方链接请求,建立连接收到对方链接请求,建立连接可以进行及时通讯判断谁先下棋判断谁先下棋等待轮到自己下棋下棋下棋将信息传递到对方的棋盘上更新,实现双方显示同步更新,实现双方显示同步判断胜负判断胜负更新胜负记录断开连接重新开始断开连接重新开始4.3程序详细设计4.3.1期盼的绘制代码和图解usingSystem;usingSystem.Collections.Generic;namespaceWindowsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}publicintBBow=0;int[]a=newint[225];intBCount=0;intBwinCount=0;intWwinCount=0;intk,g,x=15;boolOut=false;publicboolCanAgin,CanAgins,CanDown,WhoFisrtDown;privateSocketlistener;privateThreadmainThread;publicvoidForm1_Load(objectsender,EventArgse){for(inti=0;i<15;i++)//棋盘{for(intj=0;j<15;j++){PictureBoxpictureBox1=newPictureBox();pictureBox1.Location=newSystem.Drawing.Point(i*29+30,j*29+30);pictureBox1.Name="pictureBox"+(i+j*15).ToString();pictureBox1.Size=newSystem.Drawing.Size(30,30);pictureBox1.TabIndex=0;pictureBox1.Image=imageList1.Images[2];pictureBox1.TabStop=false;a[i+j*15]=3;pictureBox1.Click+=newEventHandler(asd);this.Controls.Add(pictureBox1);}}button3.Enabled=false;button6.Visible=false;button1.Enabled=false;label7.Visible=true;label8.Visible=false;CanDown=false;}4.3.2连接服务器模块namespaceWindowsApplication1{publicclassClient{//1、连接服务器//2、发送消息//3、接收数据包privateSocket_client;//跟服务器连接的socketprivatebool_connected;//socket连接状态,表示断开或已经连接两种情况//连接服务器publicvoidConnectServer(stringip,intport)//指定地址和端口{_client=newSocket(//Socket类构造函数AddressFamily.InterNetwork,//Socket使用的寻址方案IP版本为SocketType.Stream,//连接是基于流套接字的ProtocolType.Tcp);//连接协议是使用TCP协议IPEndPointep=newIPEndPoint(IPAddress.Parse(ip),port);//初始化制定的地址和端口_client.Connect(ep);_connected=true;//返回值true}//返回连接状态publicboolConnected{get{return_connected;}}//关闭连接publicvoidCloseConnection(){if(_connected){_client.Close();_connected=false;}}//发送消息publicvoidSendMessage(stringmessage){byte[]buffer=Encoding.Default.GetBytes(message+"\r\n\r\n");_client.Send(buffer);}}4.3.3判断先行,先行者添加棋子(程序代码和图)publicvoidFirst(){if(WhoFisrtDown==true){MessageBox.Show("先行");}else{MessageBox.Show("后行");}}publicvoidFiDnMessage(objectsender,FiDnMessageEventArgse)//谁先下棋的判断{if(this.InvokeRequired){this.Invoke(newEventHandler<FiDnMessageEventArgs>(this.FiDnMessage),newobject[]{sender,e});}else{WhoFisrtDown=true;}First();} 4.3.4添加后行者下棋模块(程序代码和图)publicvoidAddChess(objectsender,AddChessEventArgse){if(this.InvokeRequired){this.Invoke(newEventHandler<AddChessEventArgs>(this.AddChess),newobject[]{sender,e});}else{stringname="pictureBox"+e.Number;intnum=Int32.Parse(e.Im);BBow=Int32.Parse(e.Bow);PictureBoxbb=(PictureBox)this.Controls[name];bb.Image=imageList1.Images[num];if(num==0){label7.Visible=false;label8.Visible=true;}elseif(num==1){label7.Visible=true;label8.Visible=false;}bb.Enabled=false;ints=Int32.Parse(e.Number);a[s]=Int32.Parse(e.Im);ChessJudge();}WhoFisrtDown=true;}4.3.5判断黑白棋输赢的模块(程序代码和图)//判断黑棋是否赢publicvoidBwin(){for(g=0;g<225;g++){stringname="pictureBox"+g.ToString();PictureBoxaa=(PictureBox)this.Controls.Find(name,false)[0];aa.Enabled=false;}MessageBox.Show("黑子赢了!!请按重新开始!");BwinCount++;label1.Text="黑胜:"+BwinCount;button3.Visible=false;button6.Visible=true;button6.Enabled=true;CanAgins=false;CanAgin=false;}//判断白棋是否赢publicvoidWwin(){for(g=0;g<225;g++){stringname="pictureBox"+g.ToString();PictureBoxaa=(PictureBox)this.Controls.Find(name,false)[0];aa.Enabled=false;}MessageBox.Show("白子赢了!!请按重新开始!");WwinCount++;label2.Text="白胜:"+WwinCount;button3.Visible=false;button6.Visible=true;button6.Enabled=true;CanAgins=false;CanAgin=false;}publicvoidChessJudge()//算法{for(k=0;k<225;k++){if(a[k]==0){BCount++;for(intp=1;p<5;p++)//从左往右判断横着的黑子是否有5个相同的棋子想连{if(k+p<((k/15)+1)*x){if(a[k+p]==0){BCount++;}elseif(a[k+p]==1){BCount=0;}}}if(BCount==5){Bwin();return;}else{BCount=0;}}}for(k=0;k<225;k++)//从右往左判断横着的黑子是否有5个相同的棋子想连{if(a[k]==0){BCount++;for(intp=1;p<5;p++){if(k-p>(k/15)*x){if(a[k-p]==0){BCount++;}elseif(a[k-p]==1){BCount=0;}}}if(BCount==5){Bwin();return;}else{BCount=0;}}}for(k=0;k<225;k++)//判断"竖"着的黑子是否有5个相同的棋子想连{if(a[k]==0){BCount++;for(intp=1;p<5;p++){if(k+p*15<225){if(a[k+p*15]==0){BCount++;}elseif(a[k+p*15]==1){BCount=0;}}}if(BCount==5){Bwin();return;}else{BCount=0;}}}for(k=0;k<225;k++)//判断右"斜"上方的黑子是否有5个相同的棋子想连{if(a[k]==0){BCount++;for(intp=1;p<5;p++){if(k-p*14>0){if(a[k-p*14]==0){BCount++;}elseif(a[k-p*14]==1){BCount=0;}}}if(BCount==5){Bwin();return;}else{BCount=0;}}}for(k=0;k<225;k++)//判断左"斜"下方的黑子是否有5个相同的棋子想连{if(a[k]==0){BCount++;for(intp=1;p<5;p++){if(k+p*14<225){if(a[k+p*14]==0){BCount++;}elseif(a[k+p*14]==1){BCount=0;}}}if(BCount==5){Bwin();return;}else{BCount=0;}}}for(k=0;k<225;k++)//判断左"斜"上方的黑子是否有5个相同的棋子想连{if(a[k]==0){BCount++;for(intp=1;p<5;p++){if(k-p

温馨提示

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

评论

0/150

提交评论