Создание Discord Bot в JavaScript: Попытка создать игру в цепочку слов между двумя игроками - PullRequest
1 голос
/ 26 февраля 2020

Пользователь, который использует определенную команду 'shiritori' и помечает другого пользователя, будет игроком1. Пользователь с тегом будет player2. Я уже скачал файл JSON с большинством слов словаря, во-первых, и я проверил его здесь, и он оказался успешным:

let usedWords = []
let points = 0

function shiritoriCommand(arguments, receivedMessage) {
    let word = receivedMessage.content.substr(11)
    fs.readFile('./words_dictionary.json', 'utf8', (err, jsonString) => {
            if (err) {
                console.log("Error reading file from disk:", err)
                return
            }
            try {
                const dictionary = JSON.parse(jsonString)
                if (word in dictionary && !(usedWords.includes(word)) && word.length >= 4) {
                    points = points + word.length
                    receivedMessage.channel.send('The word is in the dictionary! You have a total of ' + points + ' points!')
                    usedWords.push(word)
                } else {
                    receivedMessage.channel.send('Either the word is not in the dictionary, it is too short or it has already been used. You gain no points.')
                }
        } catch(err) {
                console.log('Error parsing JSON string:', err)
            }
        })

}

Текущая программа принимает полученное сообщение и разделяет слово с substr (). Затем он читает словарь, чтобы узнать, найдено ли там слово. Если это так, он помещает слово в массив использованных слов, поэтому его нельзя использовать снова для получения очков. Очки - это длина слова (которая должна составлять 4 или более, иначе она не будет учитываться). Сумма показывается, когда используется правильное слово.

Однако я нахожу сложным включить 2 игроков в Это. Я был вдохновлен дуэлью Pokecord, как можно отличить слова двух игроков и что именно должно быть сделано? Первоначально я устроил это так:

let player1 = receivedMessage.author
let player2 = receivedMessage.mentions.members.first()

Кроме того, я хочу, чтобы у каждого игрока был 15-секундный временной интервал. Игра останавливается, когда любой из игроков набирает 200 очков. Теперь я могу справиться с этим некоторое время l oop:

points1 = 0
points2 = 0

while (points1 <= 200 || points2 <= 200) {
/* Do I use set interval and duplicate the first function for each player
 and assign their respective points */
}

Если они не ответят к тому времени, то ход переходит к следующему игроку. Я понятия не имею, как объединить все это, чтобы сделать правильную игру.

1 Ответ

0 голосов
/ 26 февраля 2020

Вам нужно будет найти способ отслеживать ход своего игрока. В этом случае вы можете использовать логическое значение, так как есть только два игрока. Если вы хотите, чтобы игра была более расширяемой, вам, очевидно, потребуется использовать другую логическую проверку.

В этом случае, если

(player1Turn === true) {
// do some stuff
}

Конечно, это всего лишь один из способов справиться с этим

...