5 系统实现 5.1 代码结构 http://www.paper51.com 图5 代码结构 内容来自www.paper51.com 程序是用eclipse平台开发,在该平台下代码组织如图5所示。代码结构的详细介绍参考表1。 http://www.paper51.com 表1 代码结构介绍 http://www.paper51.com
文件夹 http://www.paper51.com
包名称 http://www.paper51.com 类 paper51.com 描述 paper51.com Src 内容来自论文无忧网 www.paper51.com 游戏源代码 内容来自www.paper51.com net.jeson.game.util 内容来自www.paper51.com (存放系统中经常用到的类,系统级) http://www.paper51.com
GameKey.java 内容来自www.paper51.com 系统级参数 内容来自论文无忧网 www.paper51.com Util.java http://www.paper51.com 系统级的类 http://www.paper51.com net.jeson.game.server 内容来自www.paper51.com (存放服务器端相关的类) 内容来自www.paper51.com
Server.java 内容来自论文无忧网 www.paper51.com 服务器端的主程序 http://www.paper51.com
net.jeson.game paper51.com
(存放启动游戏所有到的类) http://www.paper51.com Game.java http://www.paper51.com 启动游戏的入口类 copyright paper51.com net.jeson.game.biz http://www.paper51.com (存放处理一些业务逻辑的类) copyright paper51.com
Bomb.java http://www.paper51.com
管理放置的“泡泡”的类 内容来自www.paper51.com Message.java paper51.com 用来封装客户端和服务器端直接通讯的消息的类 内容来自www.paper51.com
MessageManager.java paper51.com 管理消息的接收和发送 paper51.com
net.jeson.game.component paper51.com (存放一些可以被重用的swing组件,主要是用来UI的设计) paper51.com
CenterShowDialog.java paper51.com 把窗口显示的位置在屏幕上居中 内容来自www.paper51.com GameImage.java http://www.paper51.com 管理图片加载创建的类 copyright paper51.com ImageButton.java copyright paper51.com 定义一个图片按钮 内容来自论文无忧网 www.paper51.com ImageLabel.java 内容来自www.paper51.com 定义一个图片的label. 内容来自论文无忧网 www.paper51.com ImagePanel.java 内容来自www.paper51.com
定义一个图片的panel paper51.com net.jeson.game.ui http://www.paper51.com (游戏主要显示的界面) copyright paper51.com Login.java 内容来自www.paper51.com 登陆游戏的界面 paper51.com
GameHall.java 内容来自论文无忧网 www.paper51.com
游戏大厅的界面 paper51.com QQFrame.java copyright paper51.com
启动对战场景的窗口 内容来自www.paper51.com QQPad.java http://www.paper51.com
对战场景中的画布 内容来自www.paper51.com Images(存放游戏所用到的图片) 内容来自论文无忧网 www.paper51.com Map(存放游戏对战场景中的地图。) 内容来自www.paper51.com 5.2 公共类的介绍 copyright paper51.com
系统中定义了一些公共的类,可以被客户端和服务器端多次使用,这些类里的方法多是静态的。 内容来自www.paper51.com Ø GameKey.java 内容来自论文无忧网 www.paper51.com 这里定义了一些系统级的一些参数,都是静态的。 paper51.com Ø Util.java 内容来自www.paper51.com 主要定义了4个方法,用户测试时候打印信息的,全屏的,和关闭显示窗口的方法。 内容来自www.paper51.com Ø MessageManager.java 内容来自www.paper51.com 声明了发送消息和接收消息的两个方法。控制着客户端和服务器端之间的数据交换。 内容来自www.paper51.com 5.3 服务器端的开发 paper51.com 服务器端开发是使用JAVA语言中的套接字,采用TCP协议进行通讯的。通讯的数据全部封装在一个Message类里面。这些数据在网络之间传输并在客户端和服务器端进行解析,得到后作出相应的动作。处理流程参考图6. 内容来自www.paper51.com
图6 服务器端处理流程 copyright paper51.com 服务器端主要用到了java中的网络编程和线程。在构造函数中,利用默认端口创建一个套接字ServerSocket(Port);然后进入一个无限循环来监听网络连接,每当有一个新的客户端连接到服务器,建立一个新的线程来处理该客户请求。之后服务器端继续监听,等待新的客户端连接。 http://www.paper51.com try { 内容来自论文无忧网 www.paper51.com serversocket= new ServerSocket(port); 内容来自www.paper51.com System.out.println("GameServer started at:" paper51.com +serversocket.getInetAddress().getLocalHost() + ":" 内容来自论文无忧网 www.paper51.com +serversocket.getLocalPort()); copyright paper51.com while(true) { 内容来自www.paper51.com //设置玩家的编号:1-8 内容来自www.paper51.com
if(number < 8) { http://www.paper51.com
number++; http://www.paper51.com }else { paper51.com
number= 0; copyright paper51.com continue; http://www.paper51.com
} http://www.paper51.com
clientsocket= serversocket.accept(); 内容来自www.paper51.com System.out.println("Connectionfrom:" + clientsocket); 内容来自www.paper51.com out= new ObjectOutputStream( http://www.paper51.com clientsocket.getOutputStream()); ht_out.put(clientsocket, out); paper51.com ServerThreadserverThread = new ServerThread(clientsocket, copyright paper51.com ht_out,number,out, allMessage); copyright paper51.com Threadthread = new Thread(serverThread); copyright paper51.com thread.start(); 内容来自论文无忧网 www.paper51.com
} paper51.com ServerThread被启动后,也执行一个无限循环,对连接通道进行监听,如果有该通道发过来的信息,就对相关的信息进行处理,之后把处理后的消息转发给所有玩家。 copyright paper51.com |