基于HTML5+WebSocket+JAVA的房卡棋牌源码搭建游戏,从入门到放弃(三)

Q1446595067官网:h5.haozibbs.com

之前我们已经完成了一个有房间的五指棋游戏,现在我们将进一步来完善这个东西。这一次我们打算新增的功能有:

  • 之前我们增加了房间,但并没有限制房间只能进入2个人
  • 增加一个守护线程,统计当前房间的数量,后面我们将继续完善这个守护线程的功能。
  • 展示上一个棋子落在何处
  • 离开房间后会减少房间的人数,并回收房间

思考

第一个功能应该是发生在建立连接的时候,如果房间里超过2人,则返回前端一个错误。

第二个我们需要创建一个新的线程。

第三个是一个纯粹的前端开发工作,我们可以新增两个图片,并每次标记上一次的位置,当下一个子的时候,画一个特殊的子,并用一张normal的子覆盖上一个子。

第四个是发生在断开连接的时候。

实现

第一个功能。

    Room room = roomMap.get(roomId);
    if (room.enterRoom(session)){
        session.getUserProperties().put("roomId", roomId);
    }else{
        Result result = new Result();
        result.setSuccess(false);
        result.setErrMsg("进入房间失败");
        session.getBasicRemote().sendText(new Gson().toJson(result));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

只要在进入房间失败的时候返回一个错误信息给前端即可。当然前端也要处理这个错误信息咯。

第二个功能,创建一个简单的Deamon,我们用一个context来传入运行时的一些参数。

    static {
        RunContext context = new RunContext(roomMap);
        DeamonThread deamonThread = new DeamonThread(context);
        Thread dThread = new Thread(deamonThread);
        System.out.println("Create Thread");
        dThread.start();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们可以在DeamonThread类中实现各种功能,例如每隔30s统计房间的总数。

    public void run() {
        while (true){
            try{
                System.out.println("RoomSize is[" + runContext.getRooms().size() + "]");
                Thread.sleep(30000);
            }catch (Exception e){

            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第三个是一个前端功能,我们新增了两张新的图片,用last_x, last_y来表示上一个棋子落在何处。一开始我们初始化为-1。

    if (x >= 0 && x < 15 && y >= 0 && y < 15) {
        if (chess == 1) {
            if (last_x > 0 && last_y > 0){
                context.drawImage(img_b, last_x * 40 + 20, last_y * 40 + 20);
            }
            context.drawImage(img_w_now, x * 40 + 20, y * 40 + 20);//绘制白棋
            chessData[x][y] = 1;
        }
        else {
            if (last_x > 0 && last_y > 0){
                context.drawImage(img_w, last_x * 40 + 20, last_y * 40 + 20);
            }
            context.drawImage(img_b_now, x * 40 + 20, y * 40 + 20);
            chessData[x][y] = 2;
        }
        judge(x, y, chess);
        last_x = x;
        last_y = y;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

第四个,前面我们提到在onClose方法中,有可选的参数Session,我们可以通过这个Session来获取到房间号。

    String roomId = (String)session.getUserProperties().get("roomId");
    Room room = roomMap.get(roomId);
    if (room != null){
        room.leaveRoom(session);
        if (room.getNowNumber() <= 0){
            roomMap.remove(roomId);
        }
    }
    System.out.println("Connection closed");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

PO一张图,现在的变成这样了。。。

我们又往前走了一步。这一次主要都是一些功能的完善吧。虽然还面临着诸多问题,但没事,我们可以慢慢地改进。

原文地址:https://www.cnblogs.com/meilirensheng01/p/8425256.html

时间: 2024-08-01 15:47:06

基于HTML5+WebSocket+JAVA的房卡棋牌源码搭建游戏,从入门到放弃(三)的相关文章

Webkit做到了微信房卡三公源码搭建的客户端数据库存储

微信房卡三公源码搭建Q1446595067 vx:HZYM2018 目前正在规划的HTML5标准中有很多令人兴奋的特性,我们非常愿意将这些特性在Webkit里加以实现.其中有一个特性,我们觉得目前可以带给足够的惊喜--这甚至还并不是规范,那就是客户端数据库存储.因此最近几周我和andersca还有xenon已经将其实现! 客户端数据库存储接口允许网页应用通过SQL--这个很多Web开发者已经熟悉的媒介,存储结构化的本地数据. 这些接口是异步的并且使用回调函数来处理数据库查询的结果. 定义一个简单

房卡麻将源码下载十三水房卡麻将源码搭建教程

代码中需修改的地方:1.cocos2d-x-3.14.1\cocos\Android.mk 里面 #$(call import-module,curl/prebuilt/android)修改成$(call import-module,curl/prebuilt/android) 2.cocos2d-x-3.14.1\extensions\Android.mk 添加如下  目的是为了支持外部静态curl库LOCAL_STATIC_LIBRARIES += cocos_network_staticL

网狐棋牌源码搭建教程之棋牌平台服务器架构(一)

一,棋牌类服务器的特点 1,棋牌类不分区不分服 一般来说,棋牌游戏都是不分区不分服的.所以棋牌类服务器要满足随着用户量的增加而扩展的需要. 2,房间模式 即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息. 3,每个房间的操作必须是顺序性 这个特性类似与一般游戏的回合制,每个玩家的操作都是有顺序性的. 二,需要解决的技术点 1,数据共享 因为棋牌类游戏不分区不分服(棋牌源码搭建 www.yasewl.com),我们在设计服务器的时候,是按世界服的思想去设计,即服务器是一个

h5房卡牛牛源码搭建架设教程之微信端和电脑端服务器架构

类型1:卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器: 登录时可以使用非对称加密(RSA, DH),服务器根据客户端uid,当前时间戳还有服务端私钥(h5房卡牛牛源码搭建架设Q_2189563389),计算哈希得到的加密 key 并发送给客户端.之后双方都用 HTTP通信,并用那个key进行RC4加密.客户端收到key和时间戳后保存在内存,用于之后通信,服务端不需要保

网狐棋牌源码搭建2017年最新网狐荣耀棋牌源码搭建下载

2017年最新网狐荣耀棋牌源码:含大厅全套源码+客户端+服务端+网站+后台+完整数据库 (更多详情网狐棋牌源码搭建 www.yasewl.com QQ:2189563389)

棋牌源码搭建-梭哈算法思路

梭哈游戏使用28张扑克牌,取黑桃.红桃.草花.方片四种花色的8.9.10.J.Q.K.A进行游戏,游戏人数可为2―4人.游戏开始后,先发给各家2张牌,从第二张牌开始自动亮出,每发一张牌,从牌面较大者逆时针下注.优先下注者可选择下注.不加或放弃:当别人下注后,可考虑是否"跟"或"加"注.当发到第四张牌时,可以选择"梭",即增加下注到允许的最大筹码值. 最后的胜利者获得本局桌面上的全部筹码,如果输家剩余的筹码数少于规定坐下的最小数额将被请出桌子. 牌

win7H5棋牌源码搭建修改mac地址的三种方法

H5棋牌源码搭建出租出售,都可联系Q1446595067官网: h5.haozibbs.com Win7修改MAC地址方法有以下三种: 方法一:使用Win7MAC地址修改工具 1,只适用于windows7系统的网卡MAC地址修改.XP的可以用,但没做什么测试. 2,部分windows7下的无线网卡地址无法修改,理论上也可以使用本软件修改. 3,修改MAC地址前,请先在开始菜单-运行,输入cmd打开控制台,输入getmac获取原来网卡MAC并记下来,用于以后可以改回来. 4,软件使用方法很简单,只

微信h5牛牛棋牌源码搭建架设详细教程

HTML的文件结构:html head网页头部信息(微信h5牛牛棋牌源码搭建架设Q_2189563389)/head body网页主体正文部分/body /html HTML的基本标记:定义网页背景色--bgcolor body bgcolor="背景颜色 " 设置背景图片--backgroung body background="图片的地址 " 设置文字颜色--text body text="文HTML的文件结构:<(h5牛牛棋牌平台开发www.y

棋牌源码搭建教程之棋牌游戏AI算法

棋牌游戏客户端实现采用Flash 9开发,服务端采用Win32+VC6开发(基于IOCP),数据库网关采用Win32+VC6开发(基于IOCP,MySQL5实现了处理线程池和数据库连接池).虽然服务器端去年就已经完成,但相应的机器人AI算法一直没有能力去实现.今天把它拿到Blog上来希望有机会和感兴趣的兄弟们探讨下. Kevin在他的Blog上给出了他的实现,其给出的算法思想是用宽度优先生成一棵搜索树,再根据玩牌的技巧进行剪枝与判权,机器人的AI能够像养成类游戏那样,实现在蹂躏下慢慢成长,水平逐