TypeScript + React + Redux + Socket.io-client
Koa + Socket.io
类似于五子棋,横竖斜成 4 子连珠即胜。
不同的地方在于你无法指定具体位置,只能选择某一列,之后你的落子会直接下落到这一列目前的高度处。
落子后,判断该落子的连珠可能,对这些可能存在的连珠进行遍历,比传统暴力遍历消耗更低。
优化机会
采用同样的思想,有机会使该算法通用化,使之可以适应任何的棋盘大小和连珠数量。实现一法通用。
基于 Socket.io 的 rooms 与 id 特性,可以非常便利地应对多个对局同时进行的情况。每个玩家会被分配到与自身 id 同名的房间,通过分享链接的方式把邀请人的 id 传递给被邀请人,被邀请人点击链接后经过前端处理就会加入到邀请人的房间。独特、不可预料的 id 保证了链接不外泄情况下,房间最多只会存在两人,降低了玩家误操作以及作恶可能带来的影响。