Java游戏编程原理与实践教程第15章 网络五子棋游戏.pptVIP

  • 10
  • 0
  • 约3.69千字
  • 约 26页
  • 2019-07-17 发布于辽宁
  • 举报

Java游戏编程原理与实践教程第15章 网络五子棋游戏.ppt

第15章 网络五子棋游戏 本章介绍Java下的Socket编程方法制作的“网络五子棋”程序。网络五子棋采用C/S架构,分为服务器端和客户端。服务器端运行界面如图15-1所示,游戏时服务器首先启动,单击“侦听”按钮启动服务器侦听是否有客户端连接,如果有连接则进入聊天和下棋功能,同时“侦听”按钮文字变成“正在聊天”。 用户根据提示信息,轮到自己下棋才可以在棋盘上落子,“悔棋”按钮可以在对方还没落子前悔棋。在下棋过程中服务器端用户和客户端用户之间可以聊天,服务器端用户通过“发送”按钮发送聊天信息。 网络五子棋游戏服务器端界面 网络五子棋游戏客户端界面 15.2 五子棋设计思想 15.2.1 界面设计 下棋需要有棋盘,程序中通过继承JPanel面板类GobangPanel显示如图15-3的棋盘背景图片。而棋盘线条、准星点位及双方的落子是绘制出来的。游戏界面中要求用户输入服务器IP、端口等。 棋盘背景 15.2.2 通讯协议 为了区分通信中传送的是“输赢信息”,“下的棋子位置信息”,“重新开始”等,在发送信息的首部加上代号。定义了如下协议: (1)move | 下的棋子位置坐标(x,y) 例如: “move|1|1”表示对方下子位置坐标(1,1)。 (2)over | 那方赢的信息 例如:“over |游戏结束, 黑方胜” 表示黑方赢了。 (3)quit | 表示游戏结束,对方离开了. (4)undo| x | y 悔棋命令,表示撤销刚才自己在(x,y)坐标位置的落子。 (5)chat| 聊天内容 文字聊天协议。 15.3 关键技术 15.3.1 Socket技术 网络通信解决两个问题: (1)如何识别不同的计算机。 (2)如何传送数据。 基于TCP/IP网络的Java程序与其他程序通信中,它依靠Socket进行通信。Socket可以看成在两个程序进行通信连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。 网络通信问题 网络中的两台计算机靠协议进行通信 网络中用IP标识不同的通信实体 IP:10 IP:08 http ftp mail 网络协议 在两台电脑间传送数据时,传送或接收数据的先后顺序,数据的格式等内容的约定构成通信的协议。 Internet网的数据传送有很多协议,如TCP/IP,UDP,FTP等,协议不同,具体到网络通信程序,接收和发送数据部分的代码会有不同。 用IP识别网络中的计算机 网络上不同的计算机用IP来标识。 实际上一个IP对应一张网卡。 如果一台电脑上有多张网卡,那么就需要多个IP来标识每一张网卡。 每个网卡有多个端口,供应用程序采用不同的通信协议传输数据。 每种协议都采用不同的端口号,端口号可以设置,如设置某网卡用8080号端口进行TCP/IP协议方式的数据传输。 网络程序的架构 一般网络上程序都是一个服务器,一个客户端,这种程序的总体结构叫架构,如上图所示这种总体结构叫C/S架构(即客户/服务器)架构。 C/S架构中,提出数据访问要求的程序叫客户端,被提出数据访问要求的程序叫服务器端。 一个客户端可能是一台配置很高的电脑,一个服务器端可能只是一台普通电脑。 客户端和服务器端可以是同一台电脑。 C S C S C S 网络编程工具 网络很普遍,所以,几乎所有的编程语言都提供网络编程的组件。 Java提供Socket组件供网络编程使用。 Socket是一个类。 在用Java进行网络编程时,只需使用Socket的有关方法 ,按照一定步骤编写出接收数据,处理数据,或处理数据,发送数据的代码即可。 Java Socket编程 事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的API来完成这些工作。Socket就是其中之一,对于Java而言,这些API存在于 这个包里面,因此只要导入这个包就可以准备网络编程了。 Socket编程步骤 Java提供了对TCP套接字的良好的支持,有两种套接字类: .Socket; .ServerSocket; 当编写连接到已有服务的客户端软件的时候使用Socket类。当编写绑定到本地端口以提供服务的服务器软件的时候使用ServerSocket类。这是与DatagramSocket的UDP工作方式不同的地方--在TCP中,连接服务器地和从客户端接收数据的函数被分为两个独立的类。 Socket编程步骤 Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方

文档评论(0)

1亿VIP精品文档

相关文档