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 diff --git a/public/js/game.js b/public/js/game.js index 3ecefd4..e27fd4b 100644 --- a/public/js/game.js +++ b/public/js/game.js @@ -1,22 +1,9 @@ -const app = new PIXI.Application({ - autoResize: true, - resolution: devicePixelRatio, - backgroundColor: 0x0073db -}); -document.getElementById('game').appendChild(app.view); +function start_game() { + socket.on('dice', function (data) { + console.log(data); + }); - -// -------------------------------------- code -------------------------------------- - -// ------------------------------------ end code ------------------------------------ - - -// Resize (Do Not modify) -window.addEventListener('resize', resize); - -function resize() { - let game = document.getElementById('game'); - app.renderer.resize(game.offsetWidth, game.offsetHeight); -} - -resize(); \ No newline at end of file + socket.on('card', function (data) { + console.log(data); + }); +} \ No newline at end of file