修改后的VB中WINSOCK控件在网上象棋中的应用

基于VB中WINSOCK控件的网上象棋系统的实现马根峰1,孙艳2,王平1(1.重庆邮电学院自动化学院,重庆,400065;2.铁道部第十九工程局四处,内蒙通辽,028000)摘要本文首先介绍了VisualBasic中的WINSOCK控件的使用方法,然后深入探讨了网上象棋系统的设计思想及其实现过程。关键词WINSOCK控件;TCP;UDP中图分类号:文献标识码:1引言MicrosoftVisualBasic是可视化的、面向对象的、采用事件驱动方式的结构化的高级程序设计语言。它提供了开发MicrosoftWindows(R)应用程序的迅速、最简捷的方法。在网上象棋系统的工作中,笔者利用VB编写了网上象棋系统,实现了网上下棋的基本功能。2VB中WINSOCK控件简介利用WinSock控件可以与远程计算机建立连接,并通过用户数据文报协议(UDP)或者传输控制协议(TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。Winsock它提供了访问TCP和UDP网络服务的方便途径。VisualBasic、VisualC++的开发人员都可使用它。为编写客户或服务器应用程序,不必了解TCP的细节或调用低级的WinsockAPIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。2.1TCP基础数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道服务器进行“侦听”的端口(RemotePort属性),然后调用Connect方法。如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用Listen方法。当客户计算机需要连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest事件内的Accept方法。建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用SendData方法。当接收数据时会发生DataArrival事件。调用DataArrival事件内的GetData方法就可获取数据。2.2UDP基础用户数据报协议(UDP)是一个无连接协议。跟TCP的操作不同,计算机并不建立连接。另外UDP应用程序可以是客户机,也可以是服务器。为了传输数据,首先要设置计算机A的RemoteHost为计算机B的名称或IP地址,然后将计算机A的RemotePort属性设置为计算机B的LocalPort属性,最后调用Bind方法然后,指定用于UDP连接的LocalPort和LocalIP。经过上面的在个步骤之后,计算机A和B就可以调用SendData方法来着手发送信息,还可以在DataArrival事件内的利用GetData方法来获取已发送的信息了。3网上象棋中的几个关键问题3.1如何将象棋中的棋子和棋盘的信息用计算机来描述出来象棋中棋盘象棋中棋盘共有九列,十行,共有910个点。我将显示器的最左下角看成是坐标原点,屏幕上方为Y轴的正方向,单位是1;屏幕的右方向看成是X轴的正方向,单位是1。然后用90个坐标(I,J)从(1,1)到(9,10)来表示这90个点的位置。确定每个坐标点的物理地址。首先给出坐标原点的物理坐标(X0,Y0),然后利用公式X=X0+(i1-1)*intColToColY=Y0-(j1-1)*intRowToRow其中intColToCol、intRowToRow分别表示棋盘列间距、行间距。棋子两方棋子共216个,我自定义了记录类型qiZis,它用域index、caption、blnDeleted、x、y分别表示棋子的序号、棋子的名称、是否被吃掉、在棋盘中的逻辑坐标的X值、Y值。外观上用命令按钮数组(其序号index从1到32)来代表棋子。3.2如何将象棋的规则如何转换成计算机算法象棋中走子的规则如下:“马走日、象走田、车走直路炮翻山”等等上面的这些规则如何用计算机来描述出来,如何在计算机中来控制棋子的行走和吃子,这成了网上象棋的关键。我在实现这个系统的时候是采用下面的方案。对于走子首先取得用户点击鼠标的位置(通过窗体的MouseDown事件),然后找出90个坐标点中物理坐标最为相近的一个坐标点,记下它的逻辑坐标,然后通过函数blnCanMove(ByValIndexMovedAsInteger,ByValoldXAsInteger,ByValoldYAsInteger,ByValnewXAsInteger,ByValnewYAsInteger)AsBoolean来判断序号为IndexMoved的棋子是否能从逻辑坐标(oldX,oldY)移动到(newX,newY)。在这个函数中则集中了每种棋子的走子规则。它主要是通过对两个坐标值...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?