Advertisement
Guest User

Untitled

a guest
Mar 14th, 2016
5,965
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  1. //app.js
  2. var express = require('express');
  3. var app = express();
  4. var serv = require('http').Server(app);
  5.  
  6. app.get('/',function(req, res) {
  7. res.sendFile(__dirname + '/client/index.html');
  8. });
  9. app.use('/client',express.static(__dirname + '/client'));
  10.  
  11. serv.listen(2000);
  12. console.log("Server started.");
  13.  
  14. var SOCKET_LIST = {};
  15.  
  16. var Entity = function(){
  17. var self = {
  18. x:250,
  19. y:250,
  20. spdX:0,
  21. spdY:0,
  22. id:"",
  23. }
  24. self.update = function(){
  25. self.updatePosition();
  26. }
  27. self.updatePosition = function(){
  28. self.x += self.spdX;
  29. self.y += self.spdY;
  30. }
  31. return self;
  32. }
  33.  
  34. var Player = function(id){
  35. var self = Entity();
  36. self.id = id;
  37. self.number = "" + Math.floor(10 * Math.random());
  38. self.pressingRight = false;
  39. self.pressingLeft = false;
  40. self.pressingUp = false;
  41. self.pressingDown = false;
  42. self.maxSpd = 10;
  43.  
  44. var super_update = self.update;
  45. self.update = function(){
  46. self.updateSpd();
  47. super_update();
  48. }
  49.  
  50.  
  51. self.updateSpd = function(){
  52. if(self.pressingRight)
  53. self.spdX = self.maxSpd;
  54. else if(self.pressingLeft)
  55. self.spdX = -self.maxSpd;
  56. else
  57. self.spdX = 0;
  58.  
  59. if(self.pressingUp)
  60. self.spdY = -self.maxSpd;
  61. else if(self.pressingDown)
  62. self.spdY = self.maxSpd;
  63. else
  64. self.spdY = 0;
  65. }
  66. Player.list[id] = self;
  67. return self;
  68. }
  69. Player.list = {};
  70. Player.onConnect = function(socket){
  71. var player = Player(socket.id);
  72. socket.on('keyPress',function(data){
  73. if(data.inputId === 'left')
  74. player.pressingLeft = data.state;
  75. else if(data.inputId === 'right')
  76. player.pressingRight = data.state;
  77. else if(data.inputId === 'up')
  78. player.pressingUp = data.state;
  79. else if(data.inputId === 'down')
  80. player.pressingDown = data.state;
  81. });
  82. }
  83. Player.onDisconnect = function(socket){
  84. delete Player.list[socket.id];
  85. }
  86. Player.update = function(){
  87. var pack = [];
  88. for(var i in Player.list){
  89. var player = Player.list[i];
  90. player.update();
  91. pack.push({
  92. x:player.x,
  93. y:player.y,
  94. number:player.number
  95. });
  96. }
  97. return pack;
  98. }
  99.  
  100.  
  101. var Bullet = function(angle){
  102. var self = Entity();
  103. self.id = Math.random();
  104. self.spdX = Math.cos(angle/180*Math.PI) * 10;
  105. self.spdY = Math.sin(angle/180*Math.PI) * 10;
  106.  
  107. self.timer = 0;
  108. self.toRemove = false;
  109. var super_update = self.update;
  110. self.update = function(){
  111. if(self.timer++ > 100)
  112. self.toRemove = true;
  113. super_update();
  114. }
  115. Bullet.list[self.id] = self;
  116. return self;
  117. }
  118. Bullet.list = {};
  119.  
  120. Bullet.update = function(){
  121. if(Math.random() < 0.1){
  122. Bullet(Math.random()*360);
  123. }
  124.  
  125. var pack = [];
  126. for(var i in Bullet.list){
  127. var bullet = Bullet.list[i];
  128. bullet.update();
  129. pack.push({
  130. x:bullet.x,
  131. y:bullet.y,
  132. });
  133. }
  134. return pack;
  135. }
  136.  
  137. var io = require('socket.io')(serv,{});
  138. io.sockets.on('connection', function(socket){
  139. socket.id = Math.random();
  140. SOCKET_LIST[socket.id] = socket;
  141.  
  142. Player.onConnect(socket);
  143.  
  144. socket.on('disconnect',function(){
  145. delete SOCKET_LIST[socket.id];
  146. Player.onDisconnect(socket);
  147. });
  148.  
  149.  
  150.  
  151.  
  152. });
  153.  
  154. setInterval(function(){
  155. var pack = {
  156. player:Player.update(),
  157. bullet:Bullet.update(),
  158. }
  159.  
  160. for(var i in SOCKET_LIST){
  161. var socket = SOCKET_LIST[i];
  162. socket.emit('newPositions',pack);
  163. }
  164. },1000/25);
  165.  
  166.  
  167.  
  168. //index.html
  169. <canvas id="ctx" width="500" height="500" style="border:1px solid #000000;"></canvas>
  170.  
  171. <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
  172. <script>
  173. var ctx = document.getElementById("ctx").getContext("2d");
  174. ctx.font = '30px Arial';
  175.  
  176. var socket = io();
  177.  
  178. socket.on('newPositions',function(data){
  179. ctx.clearRect(0,0,500,500);
  180. for(var i = 0 ; i < data.player.length; i++)
  181. ctx.fillText(data.player[i].number,data.player[i].x,data.player[i].y);
  182.  
  183. for(var i = 0 ; i < data.bullet.length; i++)
  184. ctx.fillRect(data.bullet[i].x-5,data.bullet[i].y-5,10,10);
  185. });
  186.  
  187. document.onkeydown = function(event){
  188. if(event.keyCode === 68) //d
  189. socket.emit('keyPress',{inputId:'right',state:true});
  190. else if(event.keyCode === 83) //s
  191. socket.emit('keyPress',{inputId:'down',state:true});
  192. else if(event.keyCode === 65) //a
  193. socket.emit('keyPress',{inputId:'left',state:true});
  194. else if(event.keyCode === 87) // w
  195. socket.emit('keyPress',{inputId:'up',state:true});
  196.  
  197. }
  198. document.onkeyup = function(event){
  199. if(event.keyCode === 68) //d
  200. socket.emit('keyPress',{inputId:'right',state:false});
  201. else if(event.keyCode === 83) //s
  202. socket.emit('keyPress',{inputId:'down',state:false});
  203. else if(event.keyCode === 65) //a
  204. socket.emit('keyPress',{inputId:'left',state:false});
  205. else if(event.keyCode === 87) // w
  206. socket.emit('keyPress',{inputId:'up',state:false});
  207. }
  208.  
  209. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement