diff --git a/Webservice/server.js b/Webservice/server.js index 2b948f2..ac4b481 100644 --- a/Webservice/server.js +++ b/Webservice/server.js @@ -1,8 +1,11 @@ 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 {raw_data} = fs.readFileSync(__dirname + '/../data/cards.json'); +let cards = JSON.parse(raw_data); let port = 5000; server.listen(port, function () { @@ -46,6 +49,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 +83,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,6 +97,23 @@ 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) 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 diff --git a/public/js/game.js b/public/js/game.js index 3ecefd4..b2ef4d3 100644 --- a/public/js/game.js +++ b/public/js/game.js @@ -1,22 +1,27 @@ -const app = new PIXI.Application({ - autoResize: true, - resolution: devicePixelRatio, - backgroundColor: 0x0073db -}); -document.getElementById('game').appendChild(app.view); +let app; - -// -------------------------------------- code -------------------------------------- - -// ------------------------------------ end code ------------------------------------ - - -// Resize (Do Not modify) window.addEventListener('resize', resize); +window.addEventListener('load', function () { + app = new PIXI.Application({ + autoResize: true, + resolution: devicePixelRatio, + backgroundColor: 0x0073db + }); + document.getElementById('game').appendChild(app.view); + + + socket.on('dice', function (data) { + console.log(data); + }); + + socket.on('card', function (data) { + console.log(data); + }); + + resize(); +}); function resize() { let game = document.getElementById('game'); app.renderer.resize(game.offsetWidth, game.offsetHeight); -} - -resize(); \ No newline at end of file +} \ No newline at end of file