Socket.IO ile HTML5 Canvas, JavaScript (John Resig basit Kalıtım kütüphanesini kullanarak) ve Node.js ile basit Çok oyunculu oluşturmaya çalışıyorum. Müşteri kodum:
var canvas = document.getElementById ('oyun'); var context = canvas.getContext ('2d'); var socket = yeni io.Socket ('127.0.0.1', {bağlantı noktası: 8080}); var oyuncu = null; var UP = 'UP', SOL = 'SOL', AŞAĞI = 'AŞAĞI', SAĞ = 'SAĞ'; Socket.connect (); socket.on ('bağlan', function () {socket.send (); console.log ( 'bağlandı!'); oyuncu = yeni Oyuncu (50, 50); }); socket.on ('mesaj', işlev (msg) { if (msg == 'UP') { player.moveUP (); } else if (msg == 'SOL') { player.moveLEFT (); } else if (msg == 'AŞAĞI') { player.moveDOWN (); } else if (msg == 'SAĞ') { player.moveRIGHT (); } Başka { } }); socket.on ('bağlantıyı kes', işlev () { console.log ( 'Bağlantı kesildi!'); }); var Player = Class.extend ({ init: işlev (x, y) { this.x = x; this.y = y; }, setX: fonksiyon (x) { this.x = x; }, getX: function () { bunu döndür. x; }, setY: fonksiyon (y) { this.y = y; }, getY: function () { bunu döndür. y; }, draw: function () { context.clearRect (0, 0, 350, 150); context.fillRect (this.x, this.y, 15, 15); }, move: function () { this.x + = 1; bu. y + = 1; }, moveUP: function () { this.y--; }, moveLEFT: function () { Bu x--; }, moveDOWN: function () { ++ this.y; }, moveRIGHT: function () { this.x ++; } }); function checkKeyCode (event) { var keyCode; if (event == null) { keyCode = window.event.keyCode; } Başka { keyCode = event.keyCode; } switch (keyCode) { vaka 38: // YUKARI player.moveUP (); socket.send (UP); break; vaka 37: // SOL player.moveLEFT (); socket.send (SOL); break; durum 40: // AŞAĞI player.moveDOWN (); socket.send (aşağı); break; durum 39: // SAĞ player.moveRIGHT (); socket.send (SAĞ); break; varsayılan: break; } } işlev güncellemesi () { ) (Player.draw; } var FPS = 30; setInterval (function () { Güncelleme(); ) (Player.draw; }, 1000 / FPS); function init () { document.onkeydown = checkKeyCode; } içinde();
Ve sunucu kodu:
var http = zorunlu ('http'), io = zorunlu ('socket.io'), buffer = new Array (), server = http.createServer (işlev (req, res) { res.writeHead (200, {'Content-Type': 'text / html'}); Yeniden gönder('Selam Dünya
'); }); server.listen (8080); var socket = io.listen (sunucu); socket.on ('bağlantı', işlev (istemci) { client.on ('mesaj', işlev (mesaj) { console.log (mesaj); client.broadcast (mesaj); }) client.on ('bağlantıyı kes', işlev () { }) });
Ve ben iki müşteri çalıştırdığımda ben ilk müşteri ile ikinci müşteri Rect hareket edebilir ve ikinci müşteri ile ilk müşteri rect hareket ve üçüncü müşteri gibi bir şey birinci ve ikinci müşteri rect hareket edebilir.
Gerçek Çok Oyunculu'yu nasıl oluşturacağım? şuna benzer: Açık üç müşteri ve ilk müşteri rect1, ikinci rect2 ve son rect3 olsun. İlk istemci sadece rect1 taşıyabilir, üçüncü istemci sadece rect3 taşıyabilir.
Belki bir fikriniz var mı? Google'da arama yapıyorum ama cevap bulamıyorum.
İngilizce dilim için özür dilerim, teşekkürler.