ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Discord.js in practice (1) - GuessTheNumber

2022-07-23 08:01:38  阅读:133  来源: 互联网

标签:GuessTheNumber obj easyBase hardBase practice js normalBase multiplier


Discord.js in practice (1) - GuessTheNumber

我们要完成一个机器人小游戏:猜数字。玩家猜的数字比正确答案大时,机器人回复:大了;小的时候同理。

一个玩家一个题目,同一时刻,允许不同玩家同时猜他们自己的谜题。

玩家可以反复猜,直到报出正确答案为止,游戏结束。

这是一个很简单的交互游戏,练的就是对消息的回复。

我们可以参考 Bot in Discord with discord.js 的 (1) ~ (10) 来完成具体设置:
https://www.cnblogs.com/hhzm/tag/Discord/

我们还可以添加以下功能:

  • 只有拥有身份组 GuessTheNumberMod 的成员可以对游戏难度进行设置。

听起来很有趣也很简单,是吧,下面就来开始吧!

首先不要着急敲代码,先考虑考虑用什么方式来实现什么:

  • 要用 /new /play /start 来开始游戏。
  • 在游戏中,通过在频道里直接输入 exit 并回车(注意这不是一个斜杠命令)来强制结束游戏。
  • 要用 /config 设置难度系数。该命令只对 GuessTheNumberMod 身份组成员有效。
  • /display-setting 显示难度系数。

我们要求数据存放在磁盘上,也就是说,机器人后台程序一关闭,难度配置不应该消失。

现在,让我们开始吧!

新建文件夹 guess_the_number,作为我们的项目根目录。按闪电豹猫的文章 Bot in Discord with discord.js (1) 创建一个全新的机器人,名叫 “GuessTheNumber”。

注意:我们用的 discord.js 的版本是 v14

为避免本文冗长,全部源代码就放这里了: https://github.com/wtflmao/guess_the_number

关键文件 commands/new.js 几乎每行代码都有注释,所以这里不再为代码逻辑做解释。

关键文件 commands/conf/conf.js 虽然位于 commands 文件夹,但它不是一份斜杠命令的源代码。这个文件导出了游戏配置的类:

module.exports = class Conf {
    constructor(multiplier, easyBase, normalBase, hardBase) {
        this.multiplier = multiplier;
        this.easyBase = easyBase;
        this.normalBase = normalBase;
        this.hardBase = hardBase;
    };

    toStr() {
        return `{\n\t"multiplier": "${this.multiplier}",\n\t"easyBase": "${this.easyBase}",\n\t"normalBase": "${this.normalBase}",\n\t"hardBase": "${this.hardBase}"\n}`;
    }

    fromString(jsonStr) {
        const obj = JSON.parse(jsonStr);
        return new Conf(obj.multiplier, obj.easyBase, obj.normalBase, obj.hardBase);
    }
}

关键文件 commands/settings.js 的第 17 行:

if (!interaction.member.roles.cache.some(role => role.id === '999960036904276008')// role: GuessTheNumberMod

这里的 999960036904276008 是在笔者的服务器的身份组 GuessTheNumberMod的 snowflake id,你需要在你自己的服务器创建一个身份组(名字无所谓,这里判断的是 id),然后把这行代码里的 id 替换掉,机器人才能正常工作。

注意,要先运行斜杠命令 /setting 来让机器人在磁盘上生成一个配置文件,否则无法玩游戏。Github repo 里已创建好了一个文件用作配置文件。

下面是效果图:

/setting value: 2
image

/display-setting
image

/new mode: Easy
image

游戏中输入 exit 强制退出:
image

关于本项目,有任何问题,都可以联系我的电子邮箱 wtflmao # 126.com (请把 # 替换成 @)。

原文链接:https://www.cnblogs.com/hhzm/p/16508453.html
转载需注明出处,代码遵守 Apache 2.0 开源协议

标签:GuessTheNumber,obj,easyBase,hardBase,practice,js,normalBase,multiplier
来源: https://www.cnblogs.com/hhzm/p/16508453.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有