NodeJS井字游戏多人游戏

即时消息真的令人沮丧,我不能解决这个问题,即时尝试它,因为天,即时通讯开发一个游戏(井字游戏)它具有使用nodeJS多人游戏function,问题不是游戏,问题是处理不同的房间…

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

本地主机?游戏ID =testing

然后我parsing这个名字,并开始发送板给这些用户。 还有问题是,当我有更多的一个,游戏崩溃,也从房间1崩溃与房间2的董事会信息…我找不到错误,我粘贴在这里的代码:

Create.html jsfiddle.net/svaae1vL/

Enter.html jsfiddle.net/6qzbpbxx/

Server.js jsfiddle.net/1q0qo8xo/

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

房间1:玩家1,玩家2房间2:玩家3,玩家4

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

另外,当我在room1中单击,它会影响room2,请帮助我卡住,因为天… … –

我相信你的问题是你在createRoom事件中共享variablesemptyBoard

 boards[data.name] = emptyBoard; 

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

 boards[data.name] = emptyBoard.slice(0); 

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

编辑:

使用slice(0)克隆数组不会克隆数组中的对象,因此您可能需要的是深度克隆,如此处所述。

@Dygestor

嘿,非常感谢你,这一行:

板[data.name] = emptyBoard.slice(0);

还没有修复,但问题是你说的,所以我试过这个:

  // Initalize board. boards[data.name] = [ ['', '', ''], ['', '', ''], ['', '', ''] ]; 

它的工作,非常感谢你!