网络比赛版五子棋

我要开发同款
范效萌19912021年03月08日
266阅读

作品详情

这是一款五子棋对战平台,玩家们进入服务器之后,由服务器为玩家设置编号并匹配对手(随机性);玩家们的每一盘对局结束后,胜者积分+1,输者-1;值得一提的 是玩家的“总时”机制:所有的玩家都拥有相同的总时时间,这种比赛机制比拼的,就是每个玩家在总时时间内的积分数量;在这种机制之下,会非常容易出现逆风翻盘的情况。服务器端逻辑简述: 在主函数main里,调用的是一个自定义的类【GobangServer】,它继承自QWidget,在它的头文件里,还有一个枚举类型【DataType】,这个类型主要用来解析传递给【GobangServer】服务器的数据报的头数据(一个int类型变量),并根据这个解析的枚举类型,来执行对应的动作;除了【DataType】之外,还有一个结构体【UserInfo】,这个用来存储链接到服务器的玩家们的信息,里面的name变量,对应的是玩家的编号,short类型的score变量,对应的是玩家的积分,QTcpSocket类型的指针变量,对应的是玩家的套接字,最后的bool型read变量,对应的是该玩家的状态;最后就是我们那个【GobangServer】服务器类的声明了,在这个类的声明里面,就会有一个UserInfo结构体数组,这个结构体储存着每个链接到服务器的玩家信息,并根据这个结构体数组,来更新排行榜。当打开应用并设置好IP等设置之后,然后启动服务器的监听,就可以等待客户端的玩家链接了;开源链接:https://github.com/wenpinglaoyao/gobang_server客户端逻辑简述:玩家打开应用并链接服务器之后,可以准备游戏,系统会为玩家匹配对手,而玩家的每一个操作都会打包成数据包,然后发给服务器,由服务器负责广播或者派发给特定对象(在每个玩家的程序里面,保存着一个int类型变量,其实该变量是某个特定玩家的套接字,比如下了一步棋,该玩家只负责发给服务器,然后由服务器负责解析这个int类型【转换指针】,再把信息派发给对手和自己)。另外,局面的输赢判断逻辑是在客户端进行的,客户端一旦接收了某个走棋消息,会自行判断是否分出胜负,如是,由胜者负责发信息给服务器。
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论