Advertisement
Guest User

Untitled

a guest
May 20th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1.  
  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. self.updateSpd = function(){
  51. if (self.pressingRight)
  52. self.spdX = self.maxSpd;
  53. else if (self.pressingLeft)
  54. self.spdX = -self.maxSpd;
  55. else
  56. self.spdX = 0;
  57.  
  58. if (self.pressingUp)
  59. self.spdY = -self.maxSpd;
  60. else if (self.pressingDown)
  61. self.spdY = self.maxSpd;
  62. else
  63. self.spdY = 0;
  64. }
  65. Player.list[id] = self;
  66. return self;
  67. }
  68.  
  69. Player.list = {};
  70.  
  71. Player.onConnect = function(socket){
  72. var player = Player(socket.id);
  73. socket.on('keyPress', function(data){
  74. if (data.inputId === 'left')
  75. player.pressingLeft = data.state;
  76. if (data.inputId === 'right')
  77. player.pressingRight = data.state;
  78. if (data.inputId === 'up')
  79. player.pressingUp = data.state;
  80. if (data.inputId === 'down')
  81. player.pressingDown = data.state;
  82. });
  83. }
  84.  
  85. Player.onDisconnect = function(socket){
  86. delete Player.list[socket.id];
  87. }
  88.  
  89. Player.update = function(){
  90. var pack = [];
  91. for (var i in Player.list) {
  92. var player = Player.list[i];
  93. player.update();
  94. pack.push({
  95. x:player.x,
  96. y:player.y,
  97. number:player.number
  98. });
  99. }
  100. return pack;
  101. }
  102.  
  103. var Bullet = function(angle){
  104. var self = Entity();
  105. self.id = Math.random();
  106. self.spdX = Math.cos(angle/180*Math.PI) * 10;
  107. self.spdY = Math.sin(angle/180*Math.PI) * 10;
  108.  
  109. self.timer = 0;
  110. self.toRemove = false;
  111. var super_update = self.update;
  112.  
  113. self.update = function(){
  114. if (self.timer++ > 100)
  115. self.toRemove = true;
  116. super_update();
  117. }
  118.  
  119. Bullet.list[self.id] = self;
  120. return self;
  121. }
  122.  
  123. Bullet.list = {};
  124.  
  125. Bullet.update = function(){
  126. if (Math.random() < 0.1) {
  127. Bullet(Math.random()*360);
  128. }
  129.  
  130. var pack = [];
  131. for (var i in Bullet.list) {
  132. var bullet = Bullet.list[i];
  133. bullet.update();
  134. pack.push({
  135. x:bullet.x,
  136. y:bullet.y,
  137. number:bullet.number
  138. });
  139. }
  140. return pack;
  141. }
  142.  
  143. var io = require('socket.io')(serv,{});
  144. io.sockets.on('connection', function(socket){
  145. socket.id = Math.random();
  146. SOCKET_LIST[socket.id] = socket;
  147.  
  148. Player.onConnect(socket);
  149. socket.on('disconnect', function(){
  150. delete SOCKET_LIST[socket.id];
  151. Player.onDisconnect(socket);
  152. });
  153.  
  154. });
  155.  
  156. setInterval(function(){
  157. var pack = {
  158. player:Player.update(),
  159. bullet:Bullet.update(),
  160. }
  161.  
  162. for (var i in SOCKET_LIST) {
  163. var socket = SOCKET_LIST[i];
  164. socket.emit('newPositions', pack);
  165. }
  166.  
  167. }, 1000/25);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement