77范文网 - 专业文章范例文档资料分享平台

C#五子棋设计(6)

来源:网络收集 时间:2019-02-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

索范围之内的空白点、不可能连成五子即不可能胜利的点以及活1,半活2点。搜索游戏双方有没有哪方即将胜利,即双方有没有成五或者可不可以制造出活4。

第三步:对第一次分析的结果进行再次分析。找出双方可以制造出活4的点的位置,如果没有的话,就分别整理出双方可以制造出活3的点的位置,半活4的点的位置,双活3的点的位置,半活3的点的位置,双活2的点的位置,活2的点的位置。

第四步:由前两次的搜索分析得出双方都不可能制造活4,所以只能找活3,再没有的话就找半活4,在没有的话就找单活3,双活2等棋型。

1.4.3算法流程

遍历整个棋盘,找出所有空白点,在每个空白点判断与该点相邻的4个方向上各方连续的棋子数,在每一个方向上,判断白子和黑子的连续的个数,判断活3,冲4等各种棋形状况,为各种状况赋权值。然后将该方向上的权值返回,将每个空白点的各个方向的权值相加,为该点权值。令设计一个数组,储存每个空白点权值,然后在遍历整个棋盘空白点,计算出每个空格点,找出权值最大点,也就是当前情况下,电脑最应该落子的点。返回权值最大的点的坐标

确定棋盘为二维数组,先写一个machine函数,用双重for(i,j)语句,遍历整个棋盘,找出所有空白点,即bkmap[i][j]=0.写4个函数分别判断上,右上,右下,右,4个方向上连续的黑子数,连续的白子数。

第 26 页 共 35 页

在每个方向上用counter1记录白子数。用counter2记录黑子数,如果白色有是那个连续(counter1=3),加权20;如果黑色有三个连续(counter2=3),加权10;如果白色有4个相连(counter1=4),加权100;如果黑色有4个相连(counter2=4),加权70.另外设置一个side变量,用来记录棋子两边的阻碍数,判断黑子两边是否有白子或已到边界。然后记录(counter1+counter2)*5-side为该点在该方向上的权值,返回该权值到machine 中

定义一个三位数组computer[i][j][4],其中i,j为空白点坐标,4代表4个方向,将每个方向上的返回值分别赋给computer[i][j][0] computer[i][j][1] computer[i][j][2] computer[i][j][3],即该点4个方向权值均确定

然后再遍历整个棋盘空白点,计算出每个空格点4个方向上权值的总和,做比较,放回权值最大的点的坐标(这里用全局变量dx,dy表示)即通过比较,不断修改全局变量的值,最后所得的dx,dy点就是计算机落子点。

流程图为:

第 27 页 共 35 页

第 28 页 共 35 页

2.系统链接 2.1服务器的设计

网络五子棋是采用网络协议为TCP/IP的网上对弈游戏,运用“客户端-服务器“(c/s)网络架构模式。服务器可以创建任意多局游戏。

通过使用多线程和网络套接字SOCKET来实现游戏之间的通讯,它是基于点对点的通讯。开始让服务器初始化建立服务器套接字SOCKET,基于某个端口PORT,服务器始终处于监听状态。客户端是动作的发起者,何时发出申请由客户端决定。客户端向服务器发出申请,服务器给予响应。打开客户端套接字SOCKET,连接到服务器端的地址ADDRESS连接建立后,创建一个SOCKET实例,并开始一个线程,监听该客户端请求。服务器继续监听其它用户的连接。服务器通过数据输入流从客户端接收信息,并且通过数据输出流把相应的信息发送给客户端。客户端发送请求和响应接收到的各种信息。

TCP/IP协议的作用在于网络互联,但其本身就是物理网上的一组完整的网络协议集。TCP在传输层上提供服务,IP在互联网层上提供服务。这两个主要协议提供的服务,加上高层的服务,共同实现了TCP/IP协议集的功能。

Socket是一种应用程序的编程接口,它通过一组管套函数使应用程序在本地系统和远程系统之间建立通信信道,实现连接的管理和数据的传输。它为网络上进程之间的通信提供了一种透明的方法,并支持包括TCP/IP在内的多种网络通信协议。

第 29 页 共 35 页

服务器端主要通过建立流连接来连接客户端,与客户端进行相互通信、转发信息。接收客户端的信息,接收信息后按照此客户端的要求将信息发送到相应的客户端,服务器端起到了中转的作用。服务器端主要方法如下:

(1) 在主类的Start()函数中,用于初始化连接的信息为: ss = new ServerSocket(TCP_PORT);

udpSocket = new DatagramSocket(UDP_PORT);

ss 为服务器端Socket,为了保证连接的正确性和转发数据的高效性,因此定义了两个端口变量:TCP_PORT和UDP_PORT,服务器端用TCP_PORT实现服务器套接字。服务器套接字等待请求通过网络传入。用UDP_PORT用来发送和接收数据报包的套接字。

(2)在主类chessServer中,其用于接受客户端连接信息的函数start(),服务器端每接收一个客户端连接,就会为每个客户端在服务器端启动一个UDPThread线程,UDPThread类继承了Thread,它集成了服务器端的所有功能,包括与各客户端之间的相互通信,转发信息。

2.2 客户端设计

游戏客户端主要用于初始化玩家信息,定义玩家的操作状态,包括游戏客户端界面的结构组织,定义游戏控制按钮的实现,定义键盘事件的实现。

主要方法:

(1)方法launchFrame()用于在玩家客户端启动时,为用户发送连接服务器信息。

(2)方法actionPerformed(ActionEvent e)用于实现玩家单击客户端下文的控制按钮的功能。在此方法中主要实现了玩家加入游戏、放弃游戏以及人机对战等各个按钮的功能。参数为触发事件的行为事件。 2.3流程

在游戏开始时,需要对网络进行设置,其包含的内容如下: A、可以选择当前用户是主机,还是客户机。如果是主机则执黑子,如果是客户机则执白子。

第 30 页 共 35 页

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C#五子棋设计(6)在线全文阅读。

C#五子棋设计(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/478894.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: