मैं एचटीएमएल 5 कैनवस, जावास्क्रिप्ट के साथ सरल मल्टी-प्लेयर बनाने की कोशिश कर रहा हूं (जॉन रेजिग सिंपल इनहेरिटेंस लाइब्रेरी का उपयोग करके) और सॉकेट के साथ Node.js। मेरा ग्राहक कोड:
var कैनवस = document.getElementById ('गेम');
var संदर्भ = कैनवस.गुटनटेक्स्ट ('2 डी');
var सॉकेट = नया io.Socket ('127.0.0.1', {पोर्ट: 8080});
var खिलाड़ी = अशक्त;
var UP = 'UP',
LEFT = 'LEFT',
DOWN = 'DOWN',
अधिकार = 'अधिकार';
socket.connect ();
सॉकेट.ऑन ('कनेक्ट', फंक्शन () {सॉकेट.सेंड ();
console.log ( 'कनेक्ट हो गया!');
खिलाड़ी = नया खिलाड़ी (50, 50);
});
socket.on ('संदेश', फ़ंक्शन (संदेश) {
अगर (संदेश == 'यूपी') {
player.moveUP ();
} और अगर (msg == 'LEFT') {
player.moveLEFT ();
} और अगर (संदेश == 'नीचे') {
player.moveDOWN ();
} और अगर (संदेश == 'अधिकार') {
player.moveRIGHT ();
} अन्य {
}
});
सॉकेट.ऑन ('डिस्कनेक्ट', फंक्शन () {
console.log ( 'डिस्कनेक्टेड!');
});
var खिलाड़ी = Class.extend ({
init: फ़ंक्शन (x, y) {
this.x = x;
this.y = y;
},
setX: फ़ंक्शन (x) {
this.x = x;
},
getX: फ़ंक्शन () {
इसे वापस करें। x;
},
setY: फ़ंक्शन (y) {
this.y = y;
},
getY: फ़ंक्शन () {
इसे वापस करो। मैं;
},
ड्रा: फ़ंक्शन () {
संदर्भ। क्लियरकट (0, 0, 350, 150);
संदर्भ.फिल्टरक्ट (यह। x, यह। 15, 15);
},
चाल: समारोह () {
this.x + = 1;
this.y + = 1;
},
MoveUP: फ़ंक्शन () {
this.y--;
},
MoveLEFT: फ़ंक्शन () {
this.x--;
},
MoveDOWN: फ़ंक्शन () {
this.y ++;
},
चाल: समारोह () {
this.x ++;
}
});
समारोह checkKeyCode (घटना) {
var कीकोड;
अगर (घटना == अशक्त) {
keyCode = window.event.keyCode;
} अन्य {
keyCode = event.keyCode;
}
स्विच (कीकोड) {
केस 38: // यूपी
player.moveUP ();
socket.send (उत्तर प्रदेश);
टूटना;
केस 37: // LEFT
player.moveLEFT ();
socket.send (बाएं);
टूटना;
मामला 40: // डाउनलोड करें
player.moveDOWN ();
socket.send (नीचे);
टूटना;
केस 39: // राइट
player.moveRIGHT ();
socket.send (दाएं);
टूटना;
चूक:
टूटना;
}
}
फ़ंक्शन अपडेट () {
player.draw ();
}
var एफपीएस = 30;
सेटइंटरवल (फ़ंक्शन () {
अपडेट करें();
player.draw ();
}, 1000 / एफपीएस);
समारोह init () {
document.onkeydown = checkKeyCode;
}
इस में();
और सर्वर कोड:
var http = की आवश्यकता है ('http'),
io = की आवश्यकता ('सॉकेट.आईओ'),
बफर = नया ऐरे (),
सर्वर = http.createServer (फ़ंक्शन (req, res) {
res.writeHead (200, {'सामग्री-प्रकार': 'पाठ / html'});
res.end ( 'नमस्ते दुनिया
');
});
server.listen (8080);
var सॉकेट = io.listen (सर्वर);
सॉकेट.ऑन ('कनेक्शन', फंक्शन (क्लाइंट) {
client.on ('संदेश', फ़ंक्शन (संदेश) {
console.log (संदेश);
client.broadcast (संदेश);
})
client.on ('डिस्कनेक्ट', फ़ंक्शन () {
})
});
और जब मैं दो क्लाइंट के I को पहले क्लाइंट के साथ चलाता हूं तो दूसरे क्लाइंट को स्थानांतरित कर सकता हूं और दूसरे क्लाइंट के साथ पहला क्लाइंट रीले और तीसरे क्लाइंट के साथ कुछ ऐसा हो सकता है जो पहले और दूसरे क्लाइंट के रेक्ट को स्थानांतरित कर सकता है।
मेरा सवाल है कि असली मल्टी प्लेयर कैसे बनाएं? ऐसा कुछ: ओपन थ्री क्लाइंट और फर्स्ट क्लाइंट को रेक्ट 1, सेकेंड रेक्ट 2 और लास्ट रेक्ट 3 मिलता है। पहला क्लाइंट केवल rect1 को स्थानांतरित कर सकता है, क्लाइंट तीसरा केवल rect3 को स्थानांतरित कर सकता है।
शायद किसी के पास विचार है? मैं Google में खोज करता हूं लेकिन उत्तर नहीं मिलता है।
मेरी अंग्रेजी भाषा के लिए क्षमा करें, धन्यवाद।