Создание колоды "на стороне сервера" в node.js / socket.io - PullRequest
0 голосов
/ 26 апреля 2020

Так что я уверен, что это довольно просто c, и я слишком усложняю это. Я делаю онлайн карточную игру с использованием express, node.js, nodemon, socket.io и phaser3. В основном все игроки должны брать из одной колоды. То, что я пытаюсь сделать, - это иметь одну колоду на стороне сервера, которая представляет собой массив, значение которого выталкивается и отправляется игроку. Таким образом, нет двух игроков, имеющих одинаковую карту. Если у каждого игрока есть своя колода, то каждый раз, когда игрок вытаскивает карту aws, каждый другой игрок должен удалить эту карту из своей версии колоды. Я попытался просто импортировать файл Deck. js, который я записал на свой сервер. js (запустить с node.js, express и nodemon), но затем я получил сообщение об ошибке «не может использовать оператор импорта вне module. "

это мой сервер. js

const server = require('express')();
const http = require('http').createServer(server);
const io = require('socket.io')(http);
import Deck from './client/src/helpers/deck'
let players = [];


io.on('connection', function(socket) {
    console.log('A user connected: ' + socket.id);
    players.push(socket.id);
    io.emit('addPlayer', socket.id); 
    socket.on('dealCards', function () {
        io.emit('dealCards');
    });
    socket.on('cardPlayed', function(gameObject, player){
        io.emit('cardPlayed', gameObject, player);
    });

    socket.on('disconnect', function() {
        console.log('A user disconnected: ' + socket.id);
        players = players.filter(player => player !== socket.id);
    });


});

http.listen(3000, function () {
    console.log('Server Started!');
});

Это моя колода. js, вверху есть два массива со всеми подсказками / ответами.

export default class Deck { 
    constructor(scene, isPrompt) {
        let cards = [];
        if(isPrompt) {
            cards = prompts;
        }
        else {
            cards = answers;
        }
        this.draw = () => {
            return cards.pop();
        }

        this.shuffle = () => {
            for (let i = cards.length - 1; i > 0; i--) {
                let j = Math.floor(Math.random() * (i + 1));
                [cards[i], cards[j]] = [cards[j], cards[i]]
            }
        }
    }
}

Я ценю любую помощь !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...