在棋牌类游戏中,服务器会下发同一房间内的所有玩家座位等信息,但是每个客户端都要展示玩家的第一(二)视角,所以需要将玩家的服务器座位和客户端数据做一下转化。
捕鱼游戏的规则是: 如果自己得服务器座位是1号或者2号位 则在客户端座位不需要处理 , 如果自己的服务器座位在3号位或者4号位,则需要将服务器座位转换成客户端的1号或者2号位,其他人的座位同步变更。
代码如下
mySeatId: 自己的服务端座位 seatId: 某一个人的服务端座位
_getPositionId(mySeatId, seatId) {
let seat1 = [1, 2, 3, 4];
let seat2 = [1, 2, 3, 4];
let seat3 = [3, 4, 1, 2];
let seat4 = [3, 4, 1, 2];
let seat = [seat1, seat2, seat3, seat4];
return seat[mySeatId - 1][seatId - 1]
},
实现流程是 拿到自己的服务器座位,同时将别人的座位和自己的服务器座位做转化,输出其客户端座位。
代码测试:
1: 如果mySeatId =2 ,seatId =3 那么服务器3号座位的玩家 实际的客服端座位为 [seat[2-1][3-1]]=[1,2,3,4][2]=3;
2: 如果mySeatId =3 ,seatId =2 那么服务器3号座位的玩家 实际的客服端座位为 [seat[3-1][2-1]]=[3,4,1,2]1]=4;
2: 如果mySeatId =3 ,seatId =3 那么服务器3号座位的玩家 实际的客服端座位为 [seat[3-1][3-1]]=[3,4,1,2]1]=1;