1、 课课 程程 设设 计计 说说 明明 书书 网络编程课程设计 学生姓名学生姓名: 学学 号:号: 学学 院院: 电子与计算机科学技术学院 专专 业业: 网络工程 题题 目目: 网络斗地主 对弈管理 1.1. 系统设计系统设计 1.1.1.1. 目标设计目标设计 本次课程设计要求我们 按照网络编程的基本原理,综合运用所学的知识, 以小组为单位,设计开发一个基于网络的游戏应用网络斗地主。通过对该系 统的分析、设计与实现,将原理与应用相结合,使我们能够学会如何把书本 上学到的知识用于解决实际问题,培养动手能力;另一方面,使我们能深入 理解和灵活掌握教学内容。 按照网络协议规范, 需要采用套接字方式,
2、 建立基于网络的游戏应用。 并且, 我们将会提供新建游戏和加入游戏功能;用户登陆后可以创建新游戏或加入 已有游戏,通过客户端与其它游戏用户对弈;程序需要采用多线程方式来确 保程序功能的正确实现,我们还要保证本程序操作方便、界面友好。 1.1.2 2 开发和运行环境开发和运行环境 开发工具:MyEclipse 运行环境: Windows xp 1.1.3 3 本人主要工作本人主要工作 负责设计网络斗地主的出牌规则处理和游戏运行时游戏逻辑部分, 按照网络 编程的协议的规范,实现服务器上对上线用户的侦听,以及对多客户端的支持和 对于所有用户出牌进行规则判断和对用户有些行为进行处理。在该部分设计中,
3、应注意一些应有的常识性功能是如何实现的。 还要保证协议和逻辑的正确性与合 理性。 2.2. 网络网络斗地主斗地主系统概要设计系统概要设计 网络斗地主是采用网络协议为 TCP/IP 的网上对弈游戏, 运用 “客户端服 务器 “(c/s) 网络架构模式。实现用户通过 Internt 连接在任何地方与不同 玩家进行对战。用户运行游戏后新建游戏,则该用户即成为服务器端和客户端的 混合体,其他用户通过加入游戏时的 ip 和端口来连接服务器。 通过使用多线 程和网络套接字 SOCKET 来实现游戏之间的通讯, 它是基于点对点的通 讯。 开始让服务器初始化建立服务器套接字 SOCKET,基于某个端口 POR
4、T,服务器始 终处 于监听状态。客户端是动作的发起者,何时发出申请由客户端决定。客户 端向服务器发 出申请,服务器给予响应。打开客户端套接字 SOCKET,连接到 服务器端的地址 ADDRESS 和端口 PORT。连接建立后,创建一个 SOCKET 实例, 并开始一个线程,监听该客户端请 求。服务器继续监听其它用户的连接。服务 器通过数据输入流从客户端接收信息, 并且 通过数据输出流把相应的信息发送 给客户端。 客户端发送请求和响应接收到的各种信息。 在服务器和客户端之 间传递的消息格式是采用“消息类别+内容“组成的,服务器和客户端在传递 消息的过程,根据消息的类别来进行相关的操作。 2.12
5、.1 系统功能模块设计系统功能模块设计 本工程包含只包含 controller,model,view 三个包。其中 controller 包中 有客户端和服务器端模块,model 包负责具体牌局规则的逻辑承载(如:派 牌,比较大小,判断用户出牌出牌是否符合规则),view 包具体的客户端的 界面。 表 1 模块划分表 类名 功能描述 ClientThread.java 客户端运行线程 ServerThread.java 服务器端运行线程 Poker.java, PokerRules.java 对牌规则模块 GamePanel.java 游戏主页面模块 AddDialog.java 加入游戏块
6、EndDialog.java 游戏结束胜负判定模块 GameFrame.java 游戏登入模块 PreParePanel.java 游戏等待开始模块 PokerLabel.java 牌的标签 2.22.2 系统流程图系统流程图 图 1 系统流程图 3 3网络网络斗地主斗地主系统系统详细设计详细设计 3.13.1 PokerPoker.java.java 该类为扑克牌类,定义扑克牌具有花色,大小,id 号,以及对应的图片 其 中 id 号是每一张牌的唯一标示,从系统自动分发扑克,到网络传输,甚至界面 响应都用到的是扑克牌的 id,在需要用到扑克牌的其他属性的地方,以 id 为参 数构造一张扑克牌,扑克牌的所有信息存储在“data/gamedata“文件夹下,对应 图片 存放在“res/cards“文件夹下 privateprivate Integer id; privateprivate Integer value; publicpublic Poker(Integer id) thisthis.id = id; ifif (id = 0) thi