1、1 JAVA 程序设计课程设计 设计说明书 基于局域网的五子棋对战游戏基于局域网的五子棋对战游戏 学生姓名 班级 学号 成绩 指 导 教 师 ( 签 字 ) 计算机与通信学院计算机与通信学院 2 目录 1 概述 1 1.1 背景和意义. 1 1.2 任务概述. 1 1.3 设计环境. 1 2 需求分析与设计 2 2.1 功能需求分析. 2 2.2 游戏需求分析. 2 2.2.1 游戏规则 . 2 2.2.2 游戏运行过程分析 . 2 3 系统整体设计 3 3.1 整体设计. 3 3.2 程序流程图. 3 3.2.1 服务器流程图 . 3 3.2.2 客户端流程图 . 4 4 原理分析 5 4.
2、1 服务器和客户端通信机制. 5 4.2 多线程机制. 6 4.3 客户端棋盘的实现. 7 5 服务器的设计与实现. 8 5.1 服务器监听. 8 5.2 传递信息. 9 6 客户端设计与实现 . 10 6.1 客户端界面设计 10 6.2 注册监听者 11 6.3 连接服务器 11 6.4 存储棋子数据结构 11 6.5 判断输赢算法 11 7 相关演示 . 15 8 总结 . 16 9 参考书籍 . 17 1 1 1 概述概述 1.1 背景和意义 五子棋是起源于中国古代的传统黑白棋种之一。五子棋不仅能增强思维能 力,提高智力,而且富含哲理,有助于修身养性。 Java 作为当今最为流行的程序
3、语言,在经过一个学期的学习之后, 使得我有 了一定的基础,但是,如果只是局限于书本上的内容,而不运用于实际之中,是 不会有进步的。所以,针对本次课程设计,为了检验自己的学习成果,选择了五 子棋游戏作为课题。 而之所以选择该课题,是因为其涉及了基于 TCP/IP 的网络编程、多线程、 GUI 组件的使用,以及事件驱动设计,有较强的综合需求,对于我们是一次不做 的检验。 1.2 任务概述 根据课题需求,联系实际,完成一个基于局域网的五子棋对战游戏,采用 CS 架构,使得在处于同一局域网环境内的客户端可以两两对战,进行游戏。 本次课程设计的任务总的分为两个部分,一个是服务端程序的实现,另一个 是客户
4、端程序实现。并且,由于我们小组刚好是两个人,所以由王康实现服务端 程序,而我则负责客户端程序的实现。 1.3 设计环境 硬件要求能运行 Windows XP、Windows7 或 Windows 8 操作系统的微机。JAVA 程序设计语言及相应的集成开发环境,Eclipse 软件编写 Java 程序。 2 2 2 需求分析需求分析与设计与设计 2.1 功能需求分析 1、 服务器程序的功能需求有以下几点: 开启套接字,等待客户端的连接 管理两个玩家之间的通信, 相互转发处于对战状态的两个客户端的落 子坐标 判断游戏的输赢状态,以及将该状态发送给客户端 2、 客户端端程序功能需求有以下几点: 主动
5、连接服务程序 创建交互界面 监听玩家的落子事件 接受服务程序转发对手的落子落标, 将自己的落子坐标发送给服务程 序 接受服务程序对于游戏的状态的处理结果 绘制棋盘以及双方的棋子 2.2 游戏需求分析 2.2.1 游戏规则 五子棋专用棋盘为 1515,盘面有纵横各十五条等距离垂直交叉的平行线构 成,共 225 个交叉点。盘面正中一点为“天元“。黑先(Start)、白后,从天元(h8) 开始相互顺序落子。黑方的第一个棋子应下在天元上,白方第一个棋子只能下在 与天元为中心邻近的八个点上,黑方第二个棋子只能下在与天元为中心邻近55 点上,白棋第二个棋子不受限制,可下在棋盘任意位置。最先在棋盘横向、竖向
6、、 斜向形成连续的相同色五个棋子的一方为胜。 2.2.2 游戏运行过程分析 由两个玩家交替落子,如果不是自己的回合,则不能落子,需等待对手落子 才会到自己的回合。双方玩家每落一次子,服务器都会对游戏状态进行判断,如 果有一方赢了,或者和棋,则会结束游戏。 3 3 3 系统整体设计系统整体设计 3.1 整体设计 本次课程设计采用的 CS 网络架构模式,并采取基于 TCP/IP 的网络协议。 通过使用多线程和网络套接字 SOCKET 来实现游戏之间的通讯,它是基于点 对点的通讯。开始让服务器初始化建立服务器套接字 SOCKET,基于某个端口 PORT,服务器始终处于监听状态。客户端是动作的发起者,何时发出申请由客户 端决定。 客户端向服务器发出申请, 服务器给予响应。 打开客户端套接字 SOCKET, 连接到服务器端的地址 ADDRESS 和端口 PORT。连接建立后,创建一个 SOCKET 实 例,并开始一个线程,监听该客户端请求。服务器继续监听其它用户的连接。服 务器通过数据输入流从客户端接收信息, 并且通过数据输出流把相应的