在我的socket.io游戏中,我有一个包含类bot.js
的文件BotPlayer
,如果另一个人类玩家不可用,它将与人类玩家一起玩。我希望机器人有一个方法makeMove
,它会向人类玩家发出动作。我知道正在执行makeMove方法,但是我无法触发emit()函数。
bot.js:
var BotPlayer = function (partner) {
this.partner = partner;
...
this.submitScore = function(score) {
console.log('SUBMIT_SCORE')
module.exports = function (io) {
this.partner.emit('message', {message: this.username + "'s score: " + score})
}
};
exports.BotPlayer = BotPlayer
socket.js:
var Bot = require('../bot/bot');
io.sockets.on('connection', function (client) {
client.on('botPlay', function (user) {
var botPlayer = new Bot.BotPlayer(client);
client.emit('message', {message: "You have joined a game with " + botPlayer.username + "!"})
client.emit('start');
botPlayer.play();
}
}
在我的主node.js文件中,我有:
// socket.io
var io = require('socket.io').listen(app.listen(port));
require('./routes/socket.js')(io);
如果我补充一点:
require('./bot/bot.js')(io);
我得到TypeError: object is not a function
然后,如果我将整个bot.js包装在:
中module.exports = function (io) {...};
我似乎无法导出BotPlayer类,并得到:
ReferenceError: BotPlayer is not defined
如何在BotPlayer方法中实现emit函数 哪个可以与其“伙伴”,客户沟通?
编辑:在jfriend00的请求下,这里是相关文件的完整代码: