当前位置: 首页 > news >正文

基于websocket的多用户网页五子棋(五)

一.前期回顾

对于前面内容不太了解的,可以去看一看下面的文章:

https://blog.csdn.net/weixin_60668256/article/details/152456527?fromshare=blogdetail&sharetype=blogdetail&sharerId=152456527&sharerefer=PC&sharesource=weixin_60668256&sharefrom=from_link

二.游戏房间设计

1.游戏房间类的设计

#include <iostream>
#include <vector>
#include <jsoncpp/json/json.h>#include "db.hpp"
#include "online.hpp"#define BOARD_ROW 15
#define BOARD_COL 15
#define CHESS_WHITE 1
#define CHESS_BLACK 2enum room_status{GAME_START,GAME_OVER
};class room{private:uint64_t _room_id;room_status _status;int _player_count;uint64_t _white_id;uint64_t _black_id;user_table* _tb_user;online_manager* _online_user;std::vector<std::vector<int>> _board;private:uint64_t check_win(int row,int col,int color){//从四个不同的方向上检测是否出现了五个及以上的相同颜色的格子return ;/*返回胜利玩家的ID,否则没有胜利者返回0*/}public:room(uint64_t room_id,user_table* tb_user,online_manager* online_user):_room_id(room_id),_status(GAME_START),_player_count(0),_tb_user(tb_user),_online_user(online_user),_board(BOARD_ROW,std::vector<int>(BOARD_COL,0)){DLOG("%lu 房间创建成功!!",_room_id);}~room(){DLOG("%lu 房间销毁成功!!",_room_id);}uint64_t id(){return _room_id;}room_status status(){return _status;}int player_count(){return _player_count;}void add_white_user(uint64_t uid){_white_id = uid;_player_count++;}void add_black_user(uint64_t uid){_black_id = uid;_player_count++;}uint64_t get_white_user(){return _white_id;}uint64_t get_black_user(){return _black_id;}//处理下棋动作Json::Value handle_chess(Json::Value &req){}//处理聊天动作Json::Value handle_chat(Json::Value &req){}//处理退出动作void handle_exit(uint64_t uid){}//总的请求处理函数,区分请求类型,根据不同的请求调用不同的处理函数,得到响应进行广播void handle_request(Json::Value& req){}//处理广播动作void broadcast(Json::Value &req){}
};

2.接口格式了解

走棋输入的json格式:

走棋输出的json格式:

聊天的输入的json格式:

聊天的输出的json格式:

3.handle_chess()实现

Json::Value handle_chess(Json::Value &req){Json::Value json_resp;//1.当前请求房间号与当前房间号是否匹配uint64_t room_id = req["room_id"].asUInt64();if(room_id != _room_id){json_resp["optype"] = "put_chess";json_resp["result"] = false;json_resp["reason"] = "房间号不匹配!";return json_resp;}//2.判断房间中两个玩家是否都在线,任意一个不在线,就是另一方胜利int chess_row 
http://www.dtcms.com/a/445876.html

相关文章:

  • 【图像处理基石】什么是全景视觉?
  • 【Linux】线程同步和生产者消费者模型
  • 《嵌入式驱动(三):字符设备驱动开发》
  • 做的网站提示磁盘空间不足投票活动网站怎么做
  • 项目1:FFMPEG推流器讲解(二):FFMPEG输出模块初始化
  • 中级前端进阶方向 框架篇 三十四) 前端自动化测试 + 【步骤落地 + 了解】
  • 【开题答辩全过程】以 python杭州亚运会数据分析与可视化开题为例,包含答辩的问题和答案
  • 中国做外贸网站有哪些网站下雪的效果怎么做的
  • XSLT `<choose>` 元素详解
  • 汽车零部件英语词汇 | 3000 最常用单词系列
  • 深圳优秀网站建设价格网站视频开发平台
  • 菏泽最好的网站建设公司安徽建设工程信息网查
  • Video-of-Thought论文阅读
  • 做下载类型网站怎样划算做网站常用的技术有哪些
  • stp instance 0 cost 5000 概念及题目
  • KVM创建的虚拟机,虚拟机的网卡是如何生成的
  • 网站开发人员结构清新太和做网站
  • 【开题答辩全过程】以 SportsGo健身网站为例,包含答辩的问题和答案
  • Cobalt Strike
  • Java Servlet(三)--- 写一个简单的网站,表白墙程序,登录功能的实现
  • 达梦数据库(DM8)物理备份与还原
  • 【AI论文】OpenGPT-4o-Image:面向高级图像生成与编辑的综合性数据集
  • Pyenv 使用教程:安装与卸载
  • 告别PECL,拥抱PIE:像Composer一样管理PHP扩展
  • weex做网站python做网页
  • 【超详细】使用conda配置python的开发环境
  • 深圳沙井公司网站建设网上银行登录
  • 高端公司网站建设自适应网站cms
  • isis整体知识梳理
  • 水管 / 污水管道巡检机器人(研究思路_1)