NodeJS Tic Tac Toe多人游戏

red*_*ffi 5 html javascript node.js

我真的很心灰意冷,我无法解决这个问题,即时通讯尝试它,即时开发游戏(tic tac toe)它有使用nodeJS的多人游戏功能,问题不在于游戏,问题在于处理不同的房间......

我使用socket.join等,所以用户可以加入不同的房间; 加入不同的游戏也是我通过url游戏名称的板子,例如:

本地主机?游戏ID =测试

然后我解析这个名字并开始向这些用户发送电路板.问题是,当我有一个以上,游戏崩溃,房间1的董事会信息崩溃与房间2 ...我无法找到错误,我在这里粘贴代码:

Create.html jsfiddle.net/svaae1vL/

Enter.html jsfiddle.net/6qzbpbxx/

Server.js jsfiddle.net/1q0qo8xo/

就像我之前说的那样,问题是:

room1:player1,player2 room2:player3,player4

room1:
[x,o,x]
[0, 0, 0]
[x,x,x]

room2:
[x,o,x]
[0, 0, 0]
[x,x,x]
Run Code Online (Sandbox Code Playgroud)

此外,当我点击room1,它影响room2,请帮助我卡住自天...

Dyg*_*tor 2

我相信您的问题是您emptyBoard在 createRoom 事件中共享变量:

boards[data.name] = emptyBoard;
Run Code Online (Sandbox Code Playgroud)

因此,如果您编辑一个板,它也会编辑所有其他板。尝试将分配更改为:

boards[data.name] = emptyBoard.slice(0);
Run Code Online (Sandbox Code Playgroud)

这应该将数组克隆到另一个对象中。

编辑:

克隆数组slice(0)不会克隆数组中的对象,因此也许您需要的是深度克隆,例如,如此处所述