Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // server przy użyciu node.js, express, socket.io
- // https://socket.io/
- const express = require('express');
- const app = express();
- const http = require('http');
- const server = http.createServer(app);
- const io = require('socket.io')(server);
- let clients = [];
- let clientsPoints = [];
- let startBool = true;
- 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'];
- let Games = 15;
- let currentPainter = 0;
- let int = parseInt(Math.random()*words.length)
- let gameStatus = {
- painter: currentPainter,
- word: words[int],
- games: Games
- };
- let ClientsScore = {
- name: clients,
- score: clientsPoints
- };
- let NewGame = false;
- app.get('/', (req, res) => {
- res.sendFile(__dirname + '/index.html');
- });
- app.use(express.static("."));
- io.on('connection', (socket) => {
- // connected
- console.log('a user connected ');
- io.emit('clients',ClientsScore);
- if(!startBool)
- {
- io.emit('gameStart', gameStatus);
- }
- // disconnected
- socket.on('disconnect', () => {
- io.emit('clientOut', socket.nick);
- let index = clients.indexOf(socket.nick);
- clients.splice(index, 1);
- clientsPoints.splice(index, 1);
- console.log('user disconnected', socket.nick);
- // zatrzymanie gry po odejściu graczy
- if(clients.length < 2)
- {
- gameStatus.word = ' ';
- gameStatus.painter = ' ';
- io.emit('gameStop');
- startBool = true;
- }
- });
- // choosen nickname
- socket.on('nickname', (nick)=>{
- io.emit('nickname', nick);
- socket.nick = nick;
- clients.push(nick);
- clientsPoints.push(0);
- // start gry
- if(clients.length > 1 && startBool)
- {
- startBool = false;
- let int = parseInt(Math.random()*words.length)
- gameStatus.word = words[int];
- gameStatus.painter = clients[0];
- io.emit('gameStart', gameStatus);
- console.log(currentPainter, clients.length);
- }
- });
- // chat messaging
- socket.on('chat message', (msg) => {
- msg.name = socket.nick;
- if(msg.text == gameStatus.word)
- {
- // Koniec gry
- if(gameStatus.games < 1)
- {
- let x = 0;
- for(i in clientsPoints)
- {
- if(clientsPoints > x)
- {
- // zrobic bubble sort
- x = clientsPoints
- }
- }
- io.emit('gameOver')
- }
- console.log(currentPainter, clients.length);
- //rozpoznawanie gracza który odgadł i przydzieleniu mu punkta
- let index = clients.indexOf(socket.nick);
- clientsPoints[index]++;
- let winner = {
- name: socket.nick,
- score: clientsPoints[index]
- };
- io.emit('RightGuess', msg);
- io.emit('gameStop', winner);
- gameStatus.games--;
- let int = parseInt(Math.random()*words.length)
- gameStatus.word = words[int];
- // wybierania rysownika o 1 dalej w tablicy clients i restartowanie jezeli rysował ostatni z tablicy
- if(currentPainter <= clients.length-1)
- {
- gameStatus.painter = clients[currentPainter];
- currentPainter++;
- }
- else
- {
- currentPainter = 0;
- gameStatus.painter = clients[currentPainter];
- }
- io.emit('gameStart', gameStatus);
- }
- else
- {
- io.emit('chat message',msg);
- }
- });
- socket.on('drawing', function(drawing){
- console.log('drawing');
- socket.broadcast.emit('getPaint', drawing);
- });
- });
- server.listen(3000, () => {
- console.log('listening on *:3000');
- });
Add Comment
Please, Sign In to add comment