Advertisement
Guest User

Untitled

a guest
Mar 26th, 2016
3,655
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.81 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 DEBUG = true;
  138.  
  139. var io = require('socket.io')(serv,{});
  140. io.sockets.on('connection', function(socket){
  141. socket.id = Math.random();
  142. SOCKET_LIST[socket.id] = socket;
  143.  
  144. Player.onConnect(socket);
  145.  
  146. socket.on('disconnect',function(){
  147. delete SOCKET_LIST[socket.id];
  148. Player.onDisconnect(socket);
  149. });
  150. socket.on('sendMsgToServer',function(data){
  151. var playerName = ("" + socket.id).slice(2,7);
  152. for(var i in SOCKET_LIST){
  153. SOCKET_LIST[i].emit('addToChat',playerName + ': ' + data);
  154. }
  155. });
  156.  
  157. socket.on('evalServer',function(data){
  158. if(!DEBUG)
  159. return;
  160. var res = eval(data);
  161. socket.emit('evalAnswer',res);
  162. });
  163.  
  164.  
  165.  
  166. });
  167.  
  168. setInterval(function(){
  169. var pack = {
  170. player:Player.update(),
  171. bullet:Bullet.update(),
  172. }
  173.  
  174. for(var i in SOCKET_LIST){
  175. var socket = SOCKET_LIST[i];
  176. socket.emit('newPositions',pack);
  177. }
  178. },1000/25);
  179.  
  180.  
  181. //index.html
  182. <canvas id="ctx" width="500" height="500" style="border:1px solid #000000;"></canvas>
  183.  
  184. <div id="chat-text" style="width:500px;height:100px;overflow-y:scroll">
  185. <div>Hello!</div>
  186. </div>
  187.  
  188. <form id="chat-form">
  189. <input id="chat-input" type="text" style="width:500px"></input>
  190. </form>
  191.  
  192. <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
  193. <script>
  194. var chatText = document.getElementById('chat-text');
  195. var chatInput = document.getElementById('chat-input');
  196. var chatForm = document.getElementById('chat-form');
  197. var ctx = document.getElementById("ctx").getContext("2d");
  198. ctx.font = '30px Arial';
  199.  
  200. var socket = io();
  201.  
  202. socket.on('newPositions',function(data){
  203. ctx.clearRect(0,0,500,500);
  204. for(var i = 0 ; i < data.player.length; i++)
  205. ctx.fillText(data.player[i].number,data.player[i].x,data.player[i].y);
  206.  
  207. for(var i = 0 ; i < data.bullet.length; i++)
  208. ctx.fillRect(data.bullet[i].x-5,data.bullet[i].y-5,10,10);
  209. });
  210.  
  211. socket.on('addToChat',function(data){
  212. chatText.innerHTML += '<div>' + data + '</div>';
  213. });
  214. socket.on('evalAnswer',function(data){
  215. console.log(data);
  216. });
  217.  
  218.  
  219. chatForm.onsubmit = function(e){
  220. e.preventDefault();
  221. if(chatInput.value[0] === '/')
  222. socket.emit('evalServer',chatInput.value.slice(1));
  223. else
  224. socket.emit('sendMsgToServer',chatInput.value);
  225. chatInput.value = '';
  226. }
  227.  
  228. document.onkeydown = function(event){
  229. if(event.keyCode === 68) //d
  230. socket.emit('keyPress',{inputId:'right',state:true});
  231. else if(event.keyCode === 83) //s
  232. socket.emit('keyPress',{inputId:'down',state:true});
  233. else if(event.keyCode === 65) //a
  234. socket.emit('keyPress',{inputId:'left',state:true});
  235. else if(event.keyCode === 87) // w
  236. socket.emit('keyPress',{inputId:'up',state:true});
  237.  
  238. }
  239. document.onkeyup = function(event){
  240. if(event.keyCode === 68) //d
  241. socket.emit('keyPress',{inputId:'right',state:false});
  242. else if(event.keyCode === 83) //s
  243. socket.emit('keyPress',{inputId:'down',state:false});
  244. else if(event.keyCode === 65) //a
  245. socket.emit('keyPress',{inputId:'left',state:false});
  246. else if(event.keyCode === 87) // w
  247. socket.emit('keyPress',{inputId:'up',state:false});
  248. }
  249.  
  250. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement