Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Dependencies.
- var express = require('express');
- var http = require('http');
- var path = require('path');
- var socketIO = require('socket.io');
- const Crypto = require('crypto')
- var app = express();
- var server = http.Server(app);
- var io = socketIO(server);
- app.set('port', 5000);
- app.use('/static', express.static(__dirname + '/static'));
- // Routing
- app.get('/', function(request, response) {
- response.sendFile(path.join(__dirname, 'index.html'));
- });
- app.get('/register', function(request, response) {
- response.sendFile(path.join(__dirname, 'register.html'));
- });
- server.listen(5000, function() {
- console.log('Starting server on port 5000');
- });
- var gameState = {
- "words" : GetWords(),
- "players" : GetPlayers(),
- "turn" : 0,
- "side" : "red"
- };
- io.on('connection', function(socket) {
- socket.on('register', function(data) {
- AddPlayer(socket, data)
- });
- socket.on('validate session', function(data)
- {
- ValidateSession(socket, data)
- });
- socket.on('chose word', SelectWord);
- });
- setInterval(function() {
- io.sockets.emit('state', gameState);
- }, 1000 / 5);
- function SelectWord(data)
- {
- // TODO: add check that it is the correct user turn
- correctPlayer = false;
- for (var i = 0; i < gameState.players[gameState.side].length; i++)
- {
- if (gameState.players[gameState.side][i].session_id == data.player)
- {
- correctPlayer = true;
- break;
- }
- }
- if (!correctPlayer)
- {
- return;
- }
- // Change selected word to visible
- for (var i = 0; i < gameState.words.length; i++)
- {
- if (players.words[i].text == data.word)
- {
- gameState.words[i].state = "visible";
- gameState.turn += 1
- // Logic for turn sides
- if (players.side == "red")
- {
- gameState.side = "blue";
- }
- else
- {
- gameState.side = "red";
- }
- return;
- }
- }
- console.log("Error in selecting word");
- }
- function GetWords()
- {
- // colors taken from https://materializecss.com/color.html
- wordList = [
- {text:"a", state: "hidden", color:"red"},
- {text:"b", state: "hidden", color:"blue"},
- {text:"c", state: "hidden", color:"brown lighten-3"},
- {text:"d", state: "hidden", color:"red"},
- {text:"e", state: "hidden", color:"blue"},
- {text:"f", state: "hidden", color:"brown lighten-3"},
- {text:"g", state: "hidden", color:"red"},
- {text:"h", state: "hidden", color:"blue"},
- {text:"i", state: "hidden", color:"brown lighten-3"},
- {text:"j", state: "hidden", color:"red"},
- {text:"k", state: "hidden", color:"blue"},
- {text:"l", state: "hidden", color:"brown lighten-3"},
- {text:"m", state: "hidden", color:"red"},
- {text:"n", state: "hidden", color:"blue"},
- {text:"o", state: "hidden", color:"brown lighten-3"},
- {text:"p", state: "hidden", color:"red"},
- {text:"q", state: "hidden", color:"blue"},
- {text:"r", state: "hidden", color:"brown lighten-3"},
- {text:"s", state: "hidden", color:"red"},
- {text:"t", state: "hidden", color:"blue"},
- {text:"u", state: "hidden", color:"brown lighten-3"},
- {text:"v", state: "hidden", color:"red"},
- {text:"q", state: "hidden", color:"blue"},
- {text:"x", state: "hidden", color:"brown lighten-3"},
- {text:"y", state: "hidden", color:"blue-grey darken-4"},
- ]
- return wordList;
- }
- function GetPlayers()
- {
- players = {
- "red" : [
- {"name" : "zohar", "ismaster" : true},
- {"name" : "zohar", "ismaster" : false},
- {"name" : "zohar", "ismaster" : false},
- {"name" : "zohar", "ismaster" : false},
- ],
- "blue" : [
- {"name" : "roee", "ismaster" : true},
- {"name" : "roee", "ismaster" : false},
- {"name" : "roee", "ismaster" : false},
- {"name" : "roee", "ismaster" : false},
- ]
- }
- return players
- }
- function AddPlayer(socket, name)
- {
- var session_id = randomString(); //generating the sessions_id and then binding that socket to that sessions
- gameState.players.red.push({"name": name, "ismaster" : false, "session_id": session_id})
- socket.room = session_id;
- socket.join(socket.room, function(res)
- {
- console.log("joined successfully")
- socket.emit("set-session-acknowledgement", { sessionId: session_id })
- });
- }
- function randomString(size = 21) {
- return Crypto
- .randomBytes(size)
- .toString('base64')
- .slice(0, size)
- }
- function ValidateSession(socket, data)
- {
- for (var i = 0; i < gameState.players["red"].length; i++)
- {
- if (gameState.players["red"][i].session_id == data.player)
- {
- correctPlayer = true;
- break;
- }
- }
- for (var i = 0; i < gameState.players["blue"].length; i++)
- {
- if (gameState.players["blue"][i].session_id == data.player)
- {
- correctPlayer = true;
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement