1. 绪论
用java语言多线程机制和socket来处理客户端与服务器端的信息交互,实现两个下棋者的网络对战通信,发送聊天信息。
2. 总体功能要求
2.1 基本需求分析
整个软件的界面简洁且明了,各个功能区的分隔清晰
软件操作容易上手,功能按钮名称易懂
棋盘大小、棋子大小合适
2.2 高级需求分析
本次需要实验的网络五子棋需要实现多个客户在局域网对战聊天功能,所以对交互性要求很高。系统大致分为两个部分:客户机与服务器程序,再结合实际情况,为能使多个客户进行网络五子棋对战与交流,而将两个程序分开,使得在两个以上的客户进入游戏后不必多次开启服务器,从而产生服务器端口堵塞或两个想要对战的客户连接到不同服务器上后不能配对的缺陷。游戏主要分为两个部分,游戏服务端和游戏客户端。游戏服务端主要存储所有连线客户的相关信息及各种状态,并负责游戏客户之间数据的传递,具有连接服务器、挑战、传送聊天信息等等功能;游戏客户端提供客户连接服务器,并能与联网玩家进行游戏。
3. 总体功能需求
3.1 系统功能需求
通过服务器的连接,不同的玩家可以通过同一个服务器向各自想要挑战的对手进行配对,并开始各自的游戏。每个比赛都是通过网络的连接进行数据的交换,通过多线程,使得每个对战的双方不会受到第三方数据的干扰。本系统的功能要能够实现一个在网络上供多个客户进行对战和交流的网络五子棋游戏,由于是C/S 模式的网络游戏,客户只要登陆到服务器上,就能选择任何一个同样登陆到服务器上的用户已进行对战交流。在C/S模式游戏中,Server一般提供所有用户的全部信息,并能提供客户之间的信息转发。客户之间的通讯必须通过Server进行,因为多个客户能够连接到同一台Server上,所以Server必须用Thread 负责每个用户的通讯和消息处理。客户连接成功,Server利用特定的客户Thread连接不断从客户读取数据,实现客户和服务器或者客户与客户之间的信息的交互。客户端同样采用的是线程控制的思想,在每一个客户端连接上服务器后,就为此客户端启动一个网络收发数据线程。
系统设想框架如下图所示:
3.2 系统总体设想
本网络游戏可以分为两个部分:服务器和客户端。服务器主要存储所有连线客户的相关信息及各种状态,并负责游戏客户之间数据的传递,具有创建服务器、系统设置、连接服务器、挑战等等功能;客户端提供客户连接服务器,并能与联网玩家进行游戏,并有相应的操作按钮。
4. 功能模板
4.1 主要模块
初始化模块:初始化棋盘数组;在游戏界面画出棋盘;
主循环控制模块:负责控制下棋顺序,当轮到某方下子时,负责将程序流程转到相应的模块中。
玩家落子模块:即用户在指定落子区域单击后,程序就会得到该棋子的坐标,并且将棋盘数组中坐标处画出棋子的模样,1代表白色,2代表黑色,以说明是哪一方下的棋子。
胜负判断模块:根据预先设定的五子棋规则,判断游戏输赢。
网络连接模块:网络功能的实现,使多个用户通过网络连接,实现网络对战的功能。
4.2 服务器功能
服务器端主要通过建立流连接来连接客户端,与客户端进行相互通信、转发信息。接收客户端的信息,接收信息后按照此客户端的要求将信息发送到相应的客户端,服务器端起到了中转的作用。
4.3 客户端功能
玩家进入游戏界面时,首先提示用户登陆服务器,当玩家连接上服务器后,就会在界面右上角给出用户的初始玩家名,点击登入后就可以看到想要玩家列表,如果玩家想要和另一个玩家对战,只需要在列表点击该玩家名字并点击挑战按钮发送挑战信息,服务器会将该挑战发送给被挑战的玩家,被挑战的玩家接受挑战后系统会提示某某接受挑战,这时你可以选择开始游戏或者继续等待。在聊天内容框中会给出用户提示,玩家可以创建游戏或者加入建立好的游戏。
客户端模块:
|
模块名称 |
功能 |
|
用户面板 |
用于显示当前服务器上的用户及名称 |
|
操作面板 |
显示玩家可以进行的操作及可以选择的对象, 包括:会悔棋、重来、选择玩家挑战 |
|
棋盘面板 |
显示棋盘和棋子 |
|
聊天面板 |
用于用户选择要公聊或私聊的对象, 即所有人或某一具体的玩家,输入要发送的消息,发送给服务器,通过服务器转发出去。 |
5. 系统流程
后台先行打开服务器,玩家打开客户端,输入用户名连接服务器,用户名出现在玩家列表中,而后选择一个玩家进行挑战,对方接受挑战后游戏开始,通过聊天面板进行一系列互动,直到游戏结束。