diff --git a/Webservice/server.js b/Webservice/server.js index 2b948f2..6eb9bd0 100644 --- a/Webservice/server.js +++ b/Webservice/server.js @@ -1,8 +1,10 @@ let express = require('express'); +let fs = require('fs'); let app = express(); let server = require('http').createServer(app); let {Server} = require("socket.io"); let io = new Server(server); +let cards = JSON.parse(fs.readFileSync(__dirname + '/../data/cards.json')); let port = 5000; server.listen(port, function () { @@ -46,6 +48,23 @@ io.on('connection', socket => { generate_log_message(socket.room, socket.username, "LEFT", ""); }); + + + // Game + socket.on('roll dice', function () { + let sides = 3; + let randomNumber = Math.floor(Math.random() * sides) + 1; + + io.in(socket.room).emit('dice', randomNumber); + + generate_log_message(socket.room, socket.username, "DICE", randomNumber); + }); + + socket.on('get card', function (difficulty) { + io.in(socket.room).emit('card', getRandomCard(difficulty)); + + generate_log_message(socket.room, socket.username, "CARD", difficulty); + }); }); function generate_log_message(room, user, type, message) { @@ -63,6 +82,9 @@ function generate_log_message(room, user, type, message) { case 'RUNNING': color = '\x1b[35m'; break; + case 'DICE': + color = '\x1b[34m'; + break; default: color = '\x1b[0m'; } @@ -74,7 +96,24 @@ function generate_log_message(room, user, type, message) { console.info("%s[%s] [%s] [%s]\x1b[0m %s", color, room, user, type, reset_color, message); } +function getRandomCard(difficulty) { + let filtered_cards = cards.filter(card => { + return card.diffuculty === difficulty; + }); + + return shuffleAnswers(filtered_cards[Math.floor(Math.random() * filtered_cards.length)]); +} + +function shuffleAnswers(card) { + for (let i = card.answers.length - 1; i > 0; i--) { + let j = Math.floor(Math.random() * (i + 1)); + [card.answers[i], card.answers[j]] = [card.answers[j], card.answers[i]]; + } + return card; +} + + function pad(width, string, padding) { if (string === undefined || string === null) return pad(width, " ", " "); return (width <= string.length) ? string : pad(width, string + padding, padding) -} +} \ No newline at end of file diff --git a/data/cards.json b/data/cards.json new file mode 100644 index 0000000..56094a4 --- /dev/null +++ b/data/cards.json @@ -0,0 +1,71 @@ +[ + { + "id": 1, + "diffuculty": 1, + "question": "Was?", + "answers": [ + { + "answer_a": "A", + "status": false + }, + { + "answer_b": "B", + "status": true + }, + { + "answer_c": "C", + "status": false + }, + { + "answer_d": "D", + "status": false + } + ] + }, + { + "id": 2, + "diffuculty": 2, + "question": "Wie?", + "answers": [ + { + "answer_a": "A", + "status": false + }, + { + "answer_b": "B", + "status": true + }, + { + "answer_c": "C", + "status": false + }, + { + "answer_d": "D", + "status": false + } + ] + }, + { + "id": 3, + "diffuculty": 3, + "question": "Wo?", + "answers": [ + { + "answer_a": "A", + "status": false + }, + { + "answer_b": "B", + "status": true + }, + { + "answer_c": "C", + "status": false + }, + { + "answer_d": "D", + "status": false + } + ] + } +] \ No newline at end of file