- added function to get random number and card

This commit is contained in:
Administrator 2021-06-08 15:58:32 +02:00
parent 98177f6b5b
commit 948529818b
3 changed files with 119 additions and 22 deletions

View File

@ -1,8 +1,10 @@
let express = require('express'); let express = require('express');
let fs = require('fs');
let app = express(); let app = express();
let server = require('http').createServer(app); let server = require('http').createServer(app);
let {Server} = require("socket.io"); let {Server} = require("socket.io");
let io = new Server(server); let io = new Server(server);
let cards = JSON.parse(fs.readFileSync(__dirname + '/../data/cards.json'));
let port = 5000; let port = 5000;
server.listen(port, function () { server.listen(port, function () {
@ -46,6 +48,23 @@ io.on('connection', socket => {
generate_log_message(socket.room, socket.username, "LEFT", ""); 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) { function generate_log_message(room, user, type, message) {
@ -63,6 +82,9 @@ function generate_log_message(room, user, type, message) {
case 'RUNNING': case 'RUNNING':
color = '\x1b[35m'; color = '\x1b[35m';
break; break;
case 'DICE':
color = '\x1b[34m';
break;
default: default:
color = '\x1b[0m'; color = '\x1b[0m';
} }
@ -74,6 +96,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); 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) { function pad(width, string, padding) {
if (string === undefined || string === null) return pad(width, " ", " "); if (string === undefined || string === null) return pad(width, " ", " ");
return (width <= string.length) ? string : pad(width, string + padding, padding) return (width <= string.length) ? string : pad(width, string + padding, padding)

71
data/cards.json Normal file
View File

@ -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
}
]
}
]

View File

@ -1,22 +1,9 @@
const app = new PIXI.Application({ function start_game() {
autoResize: true, socket.on('dice', function (data) {
resolution: devicePixelRatio, console.log(data);
backgroundColor: 0x0073db });
});
document.getElementById('game').appendChild(app.view);
socket.on('card', function (data) {
// -------------------------------------- code -------------------------------------- console.log(data);
});
// ------------------------------------ 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();