网络围棋对弈
摘要:
本课题旨在建立一个点对点通讯模型,并建立一个网络对弈的棋盘。该软件包
括服务器端和客户端,主要功能为:在局域网中能以计算机作为棋盘,进行网
络对弈;在 Windowsxp 系统上使用它;通过本次毕业设计,使我掌握了 VB
的 Winsock 控件编写基于 TCP/IP 协议的点对点通讯应用程序的能力。
本文阐述了整个应用程序的分析与设计过程。分析以及实现的方法和过程,并
对系统界面和功能的使用作了说明。站在使用者的角度,确定各种简单功能的
实现,程序力求简单,易于操作。
关键词:
点对点;WinSock 控件;对弈;VB;协议
目录:
一、概述
二、围棋规则
三、建立连接
四、棋盘的建立
五、落子算法
六、踢子算法
七、悔棋与认输
八、总结
九、致谢
十、附源代码
一、概述
1、围棋简介
围棋相传为尧所创,纵横一十九道,天元是为太极,太极生两仪,为黑白
子;两仪生四象,为四个角。《弈旨》([汉]班固)云:“棋有白黑,阴阳分
也,骈罗列布,效天文也。”可知围棋本是仿效天文而制,逐渐演变为博弈游戏。
2、Winsock 概述
winsock 的起源
Socket 原意为“插座”,用于计算机通信则代表一种点到点信息传输。早期用
于 Unix 系统上的通信编程规范,通信双方由代表两点的“服务器”和“客户”组成,
基于 IP 协议进行按照 TCP 或 UDP 规范进行信息交换。建立双方通信的过程即
称建立一个“套接字(Socket)”,建立后利用得到的“套接字”进行各种信息的交流。
随着 Windows 系统的流行,开始有人在原来的基础上移植到 Windows 平台上。
微软在早期编写了基于 Windows 特征的(消息驱动等)“套接字”编程 API,一般称
其为“Winsock API”。当微软的 ActiveX 技术大行其道之后,Microsoft 又提供了
一个称为“Winsock”的 ActiveX 控件,方便了利用 VB 编程的程序员进行“套接字”
编程,使得我们不必深入 Socket 细节就可进行点到点的通信。
winsock 控件基础
Winsock 控件在程序设计时,看不到这个控件显现在执行的窗体之中,但是它可
以提供有关网络通讯通讯的程序设计依据,此外,在这个控件的使用上,您可以非
常容易地要求控件为您调用 TCP 或是 UDP 网络服务的功能。因此,当您在编
写有关住从式架构的应用程序时,您可以不需要了解 TCP 通讯协议或是低级的
Winsock api 调用方式.
通常,以笔者的经验,除了必须与标准通讯协议进行互动外,仅仅是进行一般
性相互通讯、交换数据时,Winsock 控件可以满足您的要求。因此您可以非常
容易地通过属性的设置以及控制方法的调用,与远程的设备进行连接并且相互
交换信息。关于这些应用方面以及调用方式,笔者将在接下的探索中,慢慢地研究。
2 网络通信分析
2.1 TCP 协议基础
不论是在 Internet 或是 Internet 网络之中,以目前流行的趋势,多半都会使用
TCP 协议来进行远程设备的连接。TCP 协议的全名为“传输控制协议(transfer
control protocol ) ” , 这 是 一 种 在 Internet 上 使 用 的 主 要 协 议 , 例 如
http,ftp,smtp 等,都是属于这个中面向连接的协议。因此,当您 使用 TCP 协
议连接两个网络上的设备时,将可以在它们之间交换希望交换的数据
同时,如果说您好开发的应用程序发球主从式应用架构(或是 n-tear(多层次))应用
系统时,将必须要知道应用系统主机的 ip 地址(利用 RemoteHost 属于取得)以
及连接端口号(利用 remoteport 属于取得)。在这些数据完全备齐之后,您才
可以进行进一步的调用、连接。因此,如果正在建立主机端应用程序时,必须
指定本机,必须指定本机(执行应用程序所在的计算机)所用的连接端口号
(localport 属于),接着将 Winsock 控件设置为“监听(listen)”,即可等候远程
客户端进行调用与连接。因此,当主机端接收到客户端调用并且要求连接的信
息时,将会触发“要求连接()”的事件,接着进行标准“允许”或是“拒绝”的程序。
一旦主机端与客户端连接完成之后,您将可以开始使用“传送数据(senddata)”
方法,将数据传送给对方,并且利用“传送完成(sendcomplete)”事件,来检测
数据是否传送完毕。同时,在数据传达对方的计算机时,将会触发对方计算的
“接收数据(dataarrival)”事
件.此时,您可以使用”取得数据(getdata)”方法,来去出这些接收到的数据.
上述的程序将周而复始地发生,直到发生“中断连接(closed)”事件或是不正
常断线为止。这种连接与数据传输的方式,则是属于 Winsock 控件 TCP 协议的
运行特色。
2 UDP 协议基础
相对于 TCP 面向连接的协议则是属于 UDP 非面向连接协议,UDP 协议的全名
是“用户数据报协议(user datagram protocol)”,其运行方式明显与 TCP 协议
有所不同。一般来说,使用 UDP 协议并没有所谓的主机端或是客户端的限制,
您可以依据需求任意对调用主机端
与客户端的角色.
因此,在数据传输之前,您必须要先设置好本机端所使用的连接端口(localport
属于所指定的)。因此,在本机上必须设置远方主机的 ip 地址(RemoteHost 属
性所指定的)以及连接端口号(remoteport),并且使用这个属性的内容与远程
设备进行连接。相对的,远程主机的本机连接端口则为调用端的远程连接端口
号,而远程主机的“远程主机 ip 地址(Re
moteHost 属性)”则为调用端的本机 ip 地址.
在完成连接之后,即可通过连接到远程的连接端口,使用 senddata 方法,将数据传
送到远程的主机上。远程的主机一旦接收到数据,将会立即触发 dataarrival 事
件,此时您可以使用 getdata 方法,来取得远程所传送的数据。 上面阐述了有关
TCP 和 UDP 的一些连接原理,至于 Winsock 的属性、方法、事件在此不做介绍有
关资料有详细说明。
如同上面的内容所描述的,不论您使用 UDP 协议或是 TCP 协议,Winsock 控件
都可以允许与远程的设备连接,并且在相互之间交换数据。因此,依据上面的
面熟而言,不论您使用的是哪一种协议都江堰市可以扮演主机端和客户端的角
色。
同时,当您在使用 Winsock 控件的过程中,这个控件不会显示在正在执行的窗
体之中。换句话说,Winsock 控件是在后台运行的一种控件。在执行过程之中,
不会具有任何选用、可见的控件。那么该如何使用 Winsock 控件呢?它可以被
应用在那些类型的应用程序之中呢?以下所列出的内容,是这个控件可以应用
的大致范围。
2.3 通信设计分析
当您准备开始使用 Winsock 控件之前,首要的工作是如何选择适用的协议类型。
如同先前所述的,您可以选择 TCP 协议或是 UDP 协议中的一种。但是这两种
协议的差异点在哪里呢?虽然,它们同样可以使用在 Internet 或是 Internet 环境
之中,但是主要的差异在于连接的状态。以下是这这两种协议的特点说明:
TCP 协议是属于面向连接的协议。所谓的面向连接协议是指——“在您可以交换
数据之前,在两个终端设备之间必须连接成功”。同时,在网络的基础理论之中 ,
都会特别强调 TCP 具有错误核对的功能。也就是说,在数据的传送过程中,如
果发生错误或是数据无法传达对方时,TCP 协议将会重复尝试着重新传送数据。
因此,核对以及重新传送的能力,因此起传输效率会比 Internet 协议或是局域网
网络协议差一些,(netBIEUI、IPX、AppleTalk)。
UDP 协议是属于无面向连接协议。这种协议为适用在两个设备之间,适用于信
息传送以及数据的传输方面。但是在使用时,必须注意当你将信息送出时,对
方可能已经离线,因而无法接收到数据,而您也无法实时察觉到对方已经离线。
此外,使用 UDP 协议的最大数据传送量,完全取决于网络的传输量。因此,此
种协议较为适用于局域网络。
因此,当您在建立应用程序并且选用适当的协议之前,务必先依据应用程序使