1 Star 0 Fork 0

distributed_coffin/gobang

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
server.js 2.18 KB
一键复制 编辑 原始数据 按行查看 历史
Eobard 提交于 2021-04-09 15:49 . 修正孤儿bug
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
// 存放在线用户k-编号v-socket
var socketMap = {};
// 自增编号
var number = 0;
// 昵称数组
var uname_list = [];
server.listen(5001);
app.use(express.static('public'));
io.on('connection', function (socket) {
// 获取用户名后发出waiting
socket.on('uname', function(uname) {
console.log("[connect] number = %d",number);
number ++;
socket.clientNum = number;
socketMap[number] = socket;
console.log("server got uname = %s, id = %d", uname, number);
if (number % 2 === 1) {
uname_list[number] = uname;
socket.emit('waiting', number);
} else {
uname_list[number] = uname;
if (socketMap[number - 1]) {
// 指明玩家单双号,发送对手用户名
socketMap[number - 1].emit("first", uname_list[number]);
socket.emit("second", uname_list[number - 1]);
} else {
socket.emit("leave");
}
}
});
socket.on('go', function (i, j, isWin) {
socketMap[getMatch(socket.clientNum)].emit("go", i, j);
if (isWin) {
socketMap[getMatch(socket.clientNum)].emit("fail");
}
});
socket.on("disconnect", function () {
delete(socketMap[socket.clientNum]);
console.log('User ['+ uname_list[socket.clientNum] + "] leave.");
if (socket.clientNum % 2 !== 0 && number === socket.clientNum && !socketMap[getMatch(socket.clientNum)]) {
// 如果1和2进入,2走了,那么1走的时候符合该条件,num++后为奇数,下次进入的人就是4,是孤儿
// 如果1 2 3 4 5, 2走了,1走的时候number不应该递增,否则5就是孤儿
number = ((number+1)/2)*2; //对齐至偶数便于下次的配对
}
if (socketMap[getMatch(socket.clientNum)]) {
socketMap[getMatch(socket.clientNum)].emit('leave');
delete(socketMap[getMatch(socket.clientNum)]);
}
});
});
// 从1开始,奇数匹配加一的数,偶数匹配减一的数
function getMatch(num) {
if (num % 2 === 1) {
return num + 1;
} else {
return num - 1;
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/distributed_coffin/gobang.git
git@gitee.com:distributed_coffin/gobang.git
distributed_coffin
gobang
gobang
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385