我当前正在制作一个简单的游戏,用户首先连接,然后输入用户名,然后将其存储起来。
所以问题是我有一个多维数组。但是,当第二个玩家连接时,它将如何知道呢?我需要创建两个吗?如果是这样,它如何知道将其推向何方?
因为我将需要找到.length,所以我可以看到有两个用户。
var socketStorage = {};
// ===============================================
// GAME LOGIC
// ===============================================
socketStorage[socket.id] = {};
socketStorage[socket.id] = {
username : "username",
socket : socket,
currQuestion : {
answered : false,
answer : false
},
allQuestionsAnswers : []
};
socket.on("setusername", function(msg){
socketStorage[socket.id].username = msg.username;
console.log(socketStorage[socket.id].username);
});
最佳答案
您的示例中没有多维数组。您也没有在游戏中进行解释-每个人都同时玩游戏,还是每个人都可以包含彼此隔离的不同玩家的不同游戏?
这是处理此问题的示例方法:我已经有一段时间没有使用套接字了,因此我正在使用您的代码以及对其处理方式的粗略记忆,如有必要,请更正所有错误。
var games = []
var socketStorage = {};
// ===============================================
// GAME LOGIC
// ===============================================
// socketStorage[socket.id] = {}; // <- this line is unnecessary.
socketStorage[socket.id] = {
username : "username",
socket : socket,
currQuestion : {
answered : false,
answer : false
},
allQuestionsAnswers : []
};
socket.on("setusername", function(msg){
socketStorage[socket.id].username = msg.username;
console.log(socketStorage[socket.id].username);
});
socket.on("newgame", function(msg){
newGameId = games.length;
games.push([]);
games[gameId].push(socketStorage[socket.id]);
socket.emit("newgamecreated", { gameId: newGameId });
});
socket.on("joingame", function(msg){
var gameId = msg.gameNumber;
games[gameId].push(socketStorage[socket.id]);
});
socket.on("getgames", function(msg){
gamesToUsers = {};
games.forEach(function(game, index) {
gamesToUsers[index] = game.map(function(socket) {
return socket.username
});
});
socket.emit("currentgames", gamesToUsers);
});
这是不完整的,而且是难以置信的基础,并且可能有几个错误,但是应该使您足够了解如何执行此操作的概念。每当有人在游戏中做某事时,您只想使用循环将新信息
socket.emit
发送给同一游戏中的每个人。所以,socket.on("somethinghappenedingame", function(msg){
game = msg.gameNumber;
update = msg.update;
games[game].forEach(function(socketObj){
socketObj.socket.emit("gameUpdate", update);
});
});
希望能有所帮助。
关于javascript - Socket.io和多维数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38172707/