- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第16章 网络中国象棋 本章介绍Java下的基于UDP编程方法制作的网络中国象棋。 1、棋盘 棋子活动的场所,叫做棋盘,在长方形的平面上,绘有九条平行的竖线和十条平行的横线相交组成,共九十个交叉点,棋子就摆在这些交叉点上。中间第五、第六两横线之间未画竖线的空白地带,称为河界,整个棋盘就以河界分为相等的两部分;两方将帅坐镇、画有米字方格的地方,叫做九宫。 2、棋子 象棋的棋子共三十二个,分为红黑两组,各十六个,由对弈双方各执一组,每组兵种是一样的,各分为七种: 红方:帅、仕、相、车、马、炮、兵 黑方:将、士、象、车、马、炮、卒 其中帅与将、仕与士、相与象、兵与卒的作用完全相同,仅仅是为了区分红棋和黑棋。 网络中国象棋界面 16.2 关键技术 UDP协议的全称是用户数据报(User Datagram Protocal),在网络中它与TCP协议一样用于处理数据报。在OSI模型中, UDP位于第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装以及不能对数据报排序的缺点。也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 本章基于UDP编程方法制作的网络中国象棋 使用包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。下面就对这两个类进行介绍。 16.2 关键技术 DatagramPacket类 DatagramPacket类用于处理报文,它将Byte数组、目标地址和目标端口等数据包装成报文或者将报文拆卸成Byte数组。应用程序在产生数据报时应该注意,TCP/IP规定数据报文大小最多包含65507个,通常主机接收548个字节,但大多数平台能够支持8192字节大小的报文。 DatagramPacket的常用方法有: getAddress()、setAddress(InetAddress) 得到、设置数据报地址。 getDate()、setDate(byte [ ] buf) 得到、设置数据报内容。 getLength()、setLength(ing length) 得到、设置数据报长度。 getPort()、setPort(int port) 得到、设置端口号。 16.2 关键技术 DatagramSocket类 DatagramSocket类在客户端创建数据报套接字与服务器端进行通信连接,并发送和接受数据报套接字。虽然有多个构造方法可供选择,但创建客户端套接字最便利的选择是DatagramSocket()函数,而服务器端则是DatagramSocket(int port)函数。如果未能创建套接字或绑定套接字到本地端口,那么这两个函数都将抛出一个SocketException对象。一旦程序创建了DatagramSocket对象,那么程序分别调用send(DatagramPacket p)和 receive(DatagramPacket p)来发送和接收数据报。 16.2 关键技术 DatagramSocket类 常用方法: connect(InetAddress address, int port) 连接指定地址。 disconnect() 断开套接字连接。 close() 关闭数据报套接字。 getInetAddress() 得到套接字所连接的地址。 getLocalAddress() 得到套接字绑定的主机地址。 getLocalPort() 得到套接字绑定的主机端口号。 getPort() 得到套接字的端口号。 reseive(DatagramPacket p) 接收数据报。 send(DatagramPacket p) 发送数据报。 16.3 网络中国象棋设计思路 16.3.1棋盘表示 棋盘表示就是使用一种数据结构来描述棋盘及棋盘上的棋子,我们使用一个二维数组Map。一个典型的中国象棋棋盘是使用 9 ×10 的二维数组表示。每一个元素代表棋盘上的一个交点。一个没有棋子的交点所对应的元素是-1。一个二维数组Map保存了当前棋盘的布局。当Map[x,y]=i时说明此处是棋子i,否则-1此处为空。程序中下棋的棋盘界面使用如图16-1所示图片资源。 16.3 网络中国象棋设计思路 16.3.2 棋子表示 16.3 网络中国象棋设计思路 16.3.2 棋子表示 16.3 网络中国象棋设计思路 16.3.3 走棋规则 对于象棋来说,有马走日,象走田等一系列复杂的规则。走法产生是博弈程序中一个相当复杂而且耗费运算时间的方面。不过,通过良好的数据结构,可以显著地提高生成的速度。 程序中IsAbleToPut(firstchess, x, y)函数实现判断是否能走棋返回逻辑值,这代码最复杂。其中参数含义如下: firstchess代表走的棋子对
您可能关注的文档
- 新Java Web程序设计教程 教学课件 范立锋 林果园 第13章 Spring与Java EE持久化数据访问.ppt
- 新Java Web应用技术与案例教程 教学课件 杨树林 胡洁萍 第三章 设计模式与分层架构.ppt
- 新Java 程序设计 教学课件 朱喜福 林建民 唐永 第01章.ppt
- 新Java 程序设计项目教程(教育部高职高专计算机教指委规划教材) 教学课件 张兴科 季昌武 项目五.ppt
- 新JavaScript程序设计基础教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 阮文江 第七章 对象编程1.ppt
- 新JavaScript程序设计基础教程 教学课件 曾海 第9章 CSS+DIV技术.ppt
- 新JavaScript脚本程序设计 教学课件 吴以欣 陈小宁 第3章 JavaScript常用内置对象.ppt
- 新Java编程与应用教程 教学课件 张莉 java_03.ppt
- 新Java编程与应用教程 教学课件 张莉 java_11.ppt
- 新Java程序设计 第二版 普通高等教育“十一五”国家级规划教材 教学课件 朱喜福2 1_ 第7章 Java的图形与用户界面.ppt
- 福建省泉州市2024届高中毕业班第三次质量监测地理试题(含答案).pdf
- 广东省2023-2024学年高三下学期2月大联考(一模)地理试题(含答案).docx
- 广东省2023-2024学年高三下学期2月大联考(一模)地理试题(含答案).pdf
- 广东省大湾区2024届普通高中毕业年级联合模拟考试(二)地理试卷(含答案).docx
- 广东省大湾区2024届普通高中毕业年级联合模拟考试(二)地理试卷(含答案).pdf
- 母婴运营全景策略——全域聚客,私域经营.pdf
- 广东省东莞市2023届三校高三下学期高考一模考试地理试题(含答案).docx
- 2025年甘肃中电瓜州风力发电有限公司招聘笔试参考题库含答案解析.pdf
- 广东省东莞市2023届三校高三下学期高考一模考试地理试题(含答案).pdf
- 广东省多校2024-2025学年高三上学期一调模拟地理试题(含答案).pdf
文档评论(0)