Michal_Pilarski

index.js

Apr 16th, 2021
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // server przy użyciu node.js, express, socket.io
  2. // https://socket.io/
  3. const express = require('express');
  4. const app = express();
  5. const http = require('http');
  6. const server = http.createServer(app);
  7. const io = require('socket.io')(server);
  8. let clients = [];
  9. let clientsPoints = [];
  10. let startBool = true;
  11. let words = ['kot', 'piaskownica', 'pies', 'youtube', 'facebook', 'rodzynki w czekoladzie', 'joker', 'batman', 'elektronik', 'zdalne nauczanie', 'oczyszczalnia ścieków', 'dzieciństwo', 'siłownia', 'telefon', 'waluta', 'piła', 'western', 'dywan', 'flaming', 'yerba mate', 'metaklefedron', 'małpka', 'knajpa', 'bal', 'koszenie trawy', 'drukarka', 'szyba', 'zderzacz hadronów', 'cyrkulator do bulbulatora', 'wchłaniacz wilgoci wszelakiej', 'śrubokręt', 'trajzega', 'drzewo', 'lampka', 'zając', 'poziomka', 'drink', 'przyczłapnik', 'kalambury', 'policja', 'kareta', 'poker', 'szachy', 'szewczyk', 'programowanie', 'procesor', 'kompresor', 'kanały', 'wymiana'];
  12. let Games = 15;
  13. let currentPainter = 0;
  14. let int = parseInt(Math.random()*words.length)
  15.  
  16. let gameStatus = {
  17.     painter: currentPainter,
  18.     word: words[int],
  19.     games: Games
  20. };
  21.  
  22. let ClientsScore = {
  23.     name: clients,
  24.     score: clientsPoints
  25. };
  26.  
  27. let NewGame = false;
  28.    
  29.  
  30. app.get('/', (req, res) => {
  31.   res.sendFile(__dirname + '/index.html');
  32. });
  33.  
  34. app.use(express.static("."));
  35.  
  36. io.on('connection', (socket) => {
  37.     // connected
  38.   console.log('a user connected ');
  39.   io.emit('clients',ClientsScore);
  40.  
  41.   if(!startBool)
  42.     {
  43.         io.emit('gameStart', gameStatus);
  44.     }
  45.  
  46.   // disconnected
  47.   socket.on('disconnect', () => {
  48.     io.emit('clientOut', socket.nick);
  49.     let index = clients.indexOf(socket.nick);
  50.     clients.splice(index, 1);
  51.     clientsPoints.splice(index, 1);
  52.     console.log('user disconnected', socket.nick);
  53.  
  54.     // zatrzymanie gry po odejściu graczy
  55.     if(clients.length < 2)
  56.     {
  57.         gameStatus.word = ' ';
  58.         gameStatus.painter = ' ';
  59.         io.emit('gameStop');
  60.         startBool = true;
  61.     }
  62.   });
  63.  
  64.   // choosen nickname
  65.   socket.on('nickname', (nick)=>{
  66.     io.emit('nickname', nick);
  67.     socket.nick = nick;
  68.     clients.push(nick);
  69.     clientsPoints.push(0);
  70.  
  71.         // start gry
  72.     if(clients.length > 1 && startBool)
  73.     {
  74.         startBool = false;
  75.         let int = parseInt(Math.random()*words.length)
  76.         gameStatus.word = words[int];
  77.         gameStatus.painter = clients[0];
  78.         io.emit('gameStart', gameStatus);
  79.         console.log(currentPainter, clients.length);
  80.     }
  81.   });
  82.  
  83.   // chat messaging
  84.     socket.on('chat message', (msg) => {
  85.         msg.name = socket.nick;
  86.  
  87.         if(msg.text == gameStatus.word)
  88.         {
  89.             // Koniec gry
  90.             if(gameStatus.games < 1)
  91.             {
  92.                 let x = 0;
  93.                 for(i in clientsPoints)
  94.                 {
  95.                     if(clientsPoints > x)
  96.                     {
  97.                         // zrobic bubble sort
  98.                         x = clientsPoints
  99.                     }
  100.                 }
  101.                 io.emit('gameOver')
  102.             }
  103.  
  104.             console.log(currentPainter, clients.length);
  105.             //rozpoznawanie gracza który odgadł i przydzieleniu mu punkta
  106.             let index = clients.indexOf(socket.nick);
  107.             clientsPoints[index]++;
  108.             let winner = {
  109.                 name: socket.nick,
  110.                 score: clientsPoints[index]
  111.             };
  112.  
  113.             io.emit('RightGuess', msg);
  114.             io.emit('gameStop', winner);
  115.             gameStatus.games--;
  116.  
  117.             let int = parseInt(Math.random()*words.length)
  118.             gameStatus.word = words[int];
  119.  
  120.             // wybierania rysownika o 1 dalej w tablicy clients i restartowanie jezeli rysował ostatni z tablicy
  121.             if(currentPainter <= clients.length-1)
  122.             {
  123.                 gameStatus.painter = clients[currentPainter];
  124.                 currentPainter++;
  125.             }
  126.             else
  127.             {
  128.                 currentPainter = 0;
  129.                 gameStatus.painter = clients[currentPainter];
  130.             }
  131.  
  132.             io.emit('gameStart', gameStatus);
  133.         }
  134.         else
  135.         {
  136.             io.emit('chat message',msg);
  137.         }
  138.     });
  139.  
  140.     socket.on('drawing', function(drawing){
  141.         console.log('drawing');
  142.         socket.broadcast.emit('getPaint', drawing);
  143.     });
  144. });
  145.  
  146. server.listen(3000, () => {
  147.   console.log('listening on *:3000');
  148. });
Add Comment
Please, Sign In to add comment