- 4
- 0
- 约4.1千字
- 约 18页
- 2019-07-17 发布于辽宁
- 举报
第16章 网络中国象棋 本章介绍Java下的基于UDP编程方法制作的网络中国象棋。 1、棋盘 棋子活动的场所,叫做棋盘,在长方形的平面上,绘有九条平行的竖线和十条平行的横线相交组成,共九十个交叉点,棋子就摆在这些交叉点上。中间第五、第六两横线之间未画竖线的空白地带,称为河界,整个棋盘就以河界分为相等的两部分;两方将帅坐镇、画有米字方格的地方,叫做九宫。 2、棋子 象棋的棋子共三十二个,分为红黑两组,各十六个,由对弈双方各执一组,每组兵种是一样的,各分为七种: 红方:帅、仕、相、车、马、炮、兵 黑方:将、士、象、车、马、炮、卒 其中帅与将、仕与士、相与象、兵与卒的作用完全相同,仅仅是为了区分红棋和黑棋。 网络中国象棋界面 16.2 关键技术 UDP协议的全称是用户数据报(User Datagram Protocal),在网络中它与TCP协议一样用于处理数据报。在OSI模型中, UDP位于第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装以及不能对数据报排序的缺点。也就是说,当报文发送之后,是无法得知其是否安全完整到达的。 本章基于UDP编程方法制作的网络中国象棋 使用java.net包下的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 棋子表示 棋子设计相应的类,每种棋子图案使用对应的图片资源如图 。 为设计程序方便,将32个棋子对象赋给了数组chess。chess[i]中下标i的含义是:如果i小于16,那么说明它属于黑方的棋子,否则是红方的棋子。这样就可以得到我们所需要的全部象棋棋子了。黑方对应的是 0至15,红方则用 16至31。 16.3 网络中国象棋设计思路 16.3.2 棋子表示 棋子设计相应的类,每种棋子图案使用对应的图片资源如图 。
您可能关注的文档
- JAVA程序设计简明教程第2章 Java语法基础.ppt
- JAVA程序设计简明教程第3章 Java语言程序控制语句.ppt
- JAVA程序设计简明教程第4章 Java面向对象编程基础.ppt
- JAVA程序设计简明教程第5章 Java面向对象编程进阶.ppt
- JAVA程序设计简明教程第6章 Java的类库.ppt
- JAVA程序设计简明教程第7章 Java Swing.ppt
- JAVA程序设计简明教程第8章 Java Applet编程.ppt
- JAVA程序设计简明教程第9章 Java高级编程.ppt
- JAVA程序设计教程第1章 Java语言概述.ppt
- JAVA程序设计教程第2章 Java程序设计基础.ppt
- 散文题型03 理解分析词句(题型专练)(全国通用)(解析版)-2026年高考语文二轮复习讲练.docx
- 考前押题10 阅读理解之应用文——关注生活 学以致用(原卷版)(押题训练)2026年高考英语阅读理解突破策略及押题(全国通用).docx
- 清单04 综合性学习之语言表达(仿写邀请转述劝说) 活动策划(知识 方法 能力清单)(解析版)-2026年中考语文二轮复习讲练(全国通用).docx
- 清单09 古诗文对比阅读之内容 情感 写法对比 语言 炼字 拓展探究(知识 方法 能力清单)(解析版)-2026年中考语文二轮复习讲练(全国通用).docx
- 小说易错02 重点情节理解偏差(选择题)(易错专练)(全国通用)(原卷版)-2026年高考语文二轮复习讲练.docx
- 专题01 声现象(题型专练)(全国通用)(原卷版)2026年中考物理二轮复习讲练.docx
- 清单08 文言文(议论类 书信应用类)阅读之论点把握 文体特点(知识 方法 能力清单)(解析版)-2026年中考语文二轮复习讲练(全国通用).docx
- 清单11 记叙文阅读之朗读设计 表达技巧 主旨情感 开放探究(知识 方法 能力清单)(解析版)-2026年中考语文二轮复习讲练(全国通用).docx
- 语言清单05 语法填空中的词类(五)无提示词--连词(全国通用)(原卷版)2026年高考英语二轮复习讲练.docx
- 第04讲 想象探索与科学精神(《西游记》《海底两万里》《昆虫记》全国通用(讲义)(解析版)2026年中考语文一轮复习讲练.docx
原创力文档

文档评论(0)