4.1.2 服务器的分牌算法
分牌算法的关键是保证牌不会重复分发,并尽力使某一玩家的的牌特别差的或者特别好的概率很低:
(1)将54张扑克牌统一编号:3、4、5……56、57放进一个ArrayList列表cardCount中,并分别对应 方块3、方块4……方块K、方块A、方块2、黑桃3,、黑桃4、……红桃3、红桃4……梅花3、梅花4……梅花K、梅花A、梅花2、小王、大王;再另外定义三个ArrayList列表Num1、Num2、Num3;
(2)用一个for循环,在每次循环中分别在cardCount列表中随机一个数添加到Num1、Num2、Num3中,并相应在cardCount列表中删除被选到的数;
(3)当cardCount列表中的数字个数为3时停止向另外三个Num列表添加数据;
(4)为Num1、Num2、Num3中的数与之相对应的扑克牌大小排序;
(5)对排序后的Num1、Num2、Num3列表进行循环,分别判断列表中的数大于10的扑克牌数是否大于或者等于4;如果每个列表中的数都达到要求转达(7);
(6)判断不符合(5)要求的列表中是否有炸弹,如果没有炸弹跳转到步骤(2);
(7)将Num1、Num2、Num3列表中是数据分别打包封装,并分别对应的发送给三个玩家;
(8)将cardCount列表中剩余的3个数打包,分别发送给三个玩家。
4.2客户端功能的实现
(1)定义一个继承Frame类,实现客户端各功能模块的组织联系
(2)定义一个封装玩家个人信息的类,记录玩家游戏相关数据
(3)定义一个封装扑克纸牌信息的类,实现图片的加载及相关调用需求
(4)定义一个用来连接服务器和客户端的类,并且接收处理从服务器发送来的数据,并分发至各个满足条件的玩家客户端
(5)定义一个处理发送或接收服务器消息的接口(Message),利用多态机制,便于定义发送和接收不同类型数据消息的类
(6)定义实现Message接口的不同类型处理数据的类,主要实现用户发送和接收不同类型的数据
(7)创建一个装有55张扑克纸牌的CardsImage文件夹(内含一张扑克背面图片),实现客户端对图片的调用
(8)定义一个继承Frame类的玩家登陆类,实现用户的登录界面和个人信息采集
(9)定义一个继承Frame类的玩家注册类,为用户建立相关信息档案。
4.2.1登录/注册功能的实现
在客户端端新建一个继承JFrame的PlayerLoginFrame类,用JTextField和JPasswordField类采集玩家的登录信息,并用PlayerLoginMsg类向Server发送数据,并返回相应结果,如果密码或者昵称输入错误,系统会给出相应的提示,如图4
上一页 [1] [2] [3] [4] [5] [6] 下一页
JAVA局域网斗地主纸牌游戏的设计与实现 第4页下载如图片无法显示或论文不完整,请联系qq752018766