问题标签 [mud]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
885 浏览

python - Python 多用户地牢 (MUD) 命令

我一直在尝试使用 MUD-PI 编写一个多用户地牢,但我一直坚持制作战斗命令,我希望它像 kill [monster] 之类的东西,例如 kill tr​​oll。

这是我的命令代码

这是我的房间代码。

还有我的怪物代码。

当我尝试 kill 命令时,我得到了这个错误。

我想知道是否有更好的方法可以做到这一点,如果有,如何解决,如果没有,我该如何解决我的问题。

0 投票
2 回答
307 浏览

python - Python泥装备命令

我正在尝试制作泥浆,但是在发出装备命令时遇到了这个错误。

我想修复我的代码,以便它允许用户输入装备剑,它会在他/她的库存中搜索该项目并应用统计信息。

这是我的商品代码

这是我的播放器代码

最后我的装备命令代码

如果您认为我需要添加更多代码才能使其有意义,请告诉我。

编辑:我想我找到了问题所在,但我不知道如何解决它我相信它在 take 命令中,它被添加到库存中,它被添加为我不知道如何添加的字符串解决这个问题

这是代码

0 投票
2 回答
1101 浏览

c# - 如何创建基于网格的地图?

0 投票
1 回答
1482 浏览

java - java中的文字冒险/互动小说

我决定创建一个帐户来提出一个我自己似乎无法弄清楚的问题,或者通过一些谷歌搜索,希望我没有忽略它。

本质上,我正在尝试用 Java 制作一个文本冒险游戏,并且在理解我应该如何将对象概念中的所有内容联系起来时遇到了一些麻烦。我已经成功地使用 XML stax 并将文件发送到程序,并使用属性和其他东西,使用户可以输入与选项关联的整数,并查看选项是否需要“项目”或给他们一个物品。然而,我没有对此采取 OOP。

我希望我的新程序能够让人们接受一串用户输入,而不仅仅是一个整数,并根据数组列表(如果存在)对其进行检查。这更接近于大多数人可能熟悉的经典 MUD。

我想以模块化的方式设计它,所以我可以慢慢地添加想法,并增加更多的复杂性,所以我也不想要“它工作得很好,所以让它不管它”的方法。

目前我只是想要接近这个的东西:

一个 Room 对象,它有:ID、Description 和可交互的 Choice 对象(这个我不确定)

如果是这样,房间对象可能需要一个选择对象。

我已经考虑过了,尝试了一些代码,又重新考虑了一遍,每一次,我总是比我觉得我应该做的更多的硬编码,并且制作了比我觉得必要的更多的变量,这让我觉得我我错过了一些在我的想法中至关重要的东西。

我还希望通过输入文件创建这些房间,而不是在代码中生成(所以基本上代码是任何类型的故事阅读器/工匠,而不是一个)

我也一直在尝试这个太久,我的解决方案变得越来越糟,但下面是我最近尝试的一个粗略的想法:

一个 GameManager 类,它接受 userInput 并在传递它之前对其进行一些检查。我没有传递任何数据,因为我不确定该方法。我也不习惯正则表达式,所以其中一些也可能是错误的,如果是,也许指出来,但这不是我的重点

我这样认为的 Room 对象:

我能做些什么来确保我不必用这么多变量说明这么多方向?

这是我想到的 Option 类的一个快速而粗略的想法,但我没有完成决定我已经在错误的方向上走得太远了

直到我输入这个之后我才看到冒险标签,所以我会开始仔细阅读那里,但仍然会发布这个,所以如果有一个很好的答案,我很抱歉,我还没有找到它。

回顾一下:将几个对象关联起来以创建一个房间对象(从文件中获取信息(XML 是我习惯使用的))的好方法是什么,该对象具有出口、描述和交互。用户与这些基于可自由输入的关键字进行交互,不限于数组持有关键字的索引值。

我在想,当用户输入诸如“向北旅行”之类的内容时,首先检查他们是否输入了关键字,在这种情况下是旅行,然后是方向。然后在其他地方检查它是否说明了旅行,用可能的northExit检查房间可能有也可能没有。然后,如果它的另一个关键字,比如检查,为了简单起见,也有完全相同的方向,但检查不同的字符串。

然后,如果房间“northExit”存在,以某种方式获得一个选项,带有指向另一个房间ID的指针。虽然这个思考过程让我在考虑未来需要物品才能到达下一个房间的可能性时产生了一些问题。此外,在哪里存储/获取这些选项也会造成一些困难。

0 投票
1 回答
140 浏览

graph - 给定无限行走的图构建算法

我需要帮助编写一个有弹性的映射(图形构建)算法。这是问题所在:

想象一下,您有一个面向文本的虚拟现实 (TORG/MUD),您可以在其中通过 telnet 发送移动命令(n、s、w、e、向上、向下、向内、向外……等)以将角色从房间移动到房间。并且服务器在每个移动步骤之后发回相应的房间描述。你的任务是生成一个表示底层地图结构的图形,这样你就可以在客户端简单地做一个 DFS 来弄清楚如何从一个房间到另一个房间。您还想设计系统,以便需要最少的用户输入

以下是假设:

  • 服务器上的底层图拓扑永远不会改变。

  • 房间描述不是唯一的。大多数房间都有不同的描述,但有些房间的描述完全相同。房间描述偶尔会稍作更改(几天或几周)

  • 你的移动可能会随机失败,概率很小,你会得到一个错误信息而不是新的房间描述,例如“你停下来等马车通过”,“门被锁上了”,你的角色仍然会在当前房间。

  • 您不能假设每次移动的单位空间距离。例如,您可能具有如下所示的拓扑,因此假设每个相邻房间的单位距离并为每个房间分配硬坐标是行不通的。但是,您可以假设相对方向是一致的,即沿 X(西,东)和 Y(南,北)的拓扑排序中不会有环。

  • 目标:给定您之前访问过的目的地,该算法保证最终将您移动到该位置,并且大部分时间会找到最短路径。错误是允许的,但算法应该能够即时检测和纠正错误。

示例图:

我已经实现了一个非常简单的解决方案,可以记录房间描述并构建图表。以下是我的程序在 json 中生成的图形表示的示例。“出口”是映射到节点 ID 的移动方向。-1 表示未映射的房间。如果用户沿着某个方向行走并在图形表示中检测到 -1,则算法将尝试查找图形中已经存在的节点。如果找到具有相同描述的节点,它将提示用户判断新看到的房间是否是旧节点之一。如果没有,它会添加一个新节点并将其连接到图形。

这个简单的解决方案在构建图形时需要人工输入检测循环。例如,在上图中,假设相同的字母代表相同的房间描述。如果您从第一个 B 开始映射,然后向左、向下、向右……直到您执行移动 k,现在您再次看到 B,但映射器无法确定它是否是它之前看到的 B。

简而言之,我希望能够编写一个弹性图构建算法,该算法在隐藏的目标图中行走(可能是无限的)并生成(并不断更新)一个可以(希望)与目标图相似的图。然后,我们使用生成的图来帮助在目标图中导航。是否有针对此类问题的现有算法?

我也想过将一些机器学习技术应用到这个问题上,但我无法写出具体的模型。我正在考虑为我们看到的每个房间(房间描述、出口、相邻节点)定义一个特征列表,每次我们看到一个房间时,我们都会尝试找到最适合特征的图形节点,并基于一些更新规则(如 Winnow 或 Perceptron)根据一些错误检测指标更新我们看到的描述。

任何想法/建议将不胜感激!

0 投票
1 回答
113 浏览

python - 为什么 .get() 不能在 Tkinter 中迭代和工作?

我为我的网络课程制作这个客户端,它应该连接到我们教授设置的 MUD 服务器,但我在 Tkinter 的条目小部件中遇到问题,当按下“Enter”按钮时,条目小部件中的文本是应该从submit_value()函数打印到外壳,但是我收到一个错误,说从它调用时入口小部件不存在.get(),谁能帮我找出这个错误?

0 投票
1 回答
411 浏览

c++ - MUD 服务器和基于文本的客户端

我已经开始开发一个简单的 MUD(基于文本的多人地下城),其中客户端仅使用终端连接和播放。

但是我以不同的方式接近它,我希望玩家能够在房间 (x,y) 周围移动并查看房间的地图,如下面的屏幕截图所示

在此处输入图像描述

所看到的整个屏幕正在由服务器发送到客户端进行更新,例如:

有人搬家了,当前位置发生了变化,有人丢了东西,等等......

在屏幕的底部,有一个地方可以让客户端输入如下命令:

看,东,西,拿起,放下,库存,...

问题

然而,设计的问题是,当用户正在输入命令时,同时服务器已经更新了它的屏幕(有人移动了,或者生成了一些事件),他将失去他正在输入的命令,因为整个屏幕都得到了神清气爽。

如何将屏幕发送给播放器?

我在服务器端构建视图,当发送到客户端时,我使用 ANSI 字符:

  1. 清屏(\u001b[H\u001b[2J)
  2. 将光标定位在窗口的特定区域 (\033[....) 以绘制视图的特定区域

问题

是否有可能,当我向他们发送视图时,客户不会丢失他们的输入?

换句话说,是否有可能(可能需要一些 ANSI 代码?)当我在终端中输入某些内容并且同时如果我收到某些内容时,我的输入不会被新收到的消息破坏?

可视化问题:

好的:

当前的:

0 投票
0 回答
95 浏览

java - MUD 编程 - 带有图形背景的地图

我目前正在做一个 MUD 项目。我想弄清楚如何使用静态背景图像作为地图。(这些地图就像方格纸。方块代表房间,线条连接方块以显示主要方向出口。)游戏中的每个区域都会有自定义的“手绘”地图。

在我的 GUI 上,将有一部分框架专门用于显示此静态地图。当玩家移动(向东、向西、向西北等移动)时,将在玩家所在的当前房间上绘制一个红点。

这类似于其他 MUD 地图,除了在大多数情况下这些地图是 ASCII/文本。我真的很希望能够使用图像作为背景,并且只“绘制”代表玩家位置的红点。

此外,房间之间的距离不会是均匀的,所以我不能盲目地移动点,比如左移 50 像素,以便进行西方移动。

我将如何进行编程?我想我需要预先定义每个房间的点显示位置。

任何正确方向的帮助将不胜感激。

0 投票
1 回答
56 浏览

regex - 如何在 Mushclient 中将任何房间描述与正则表达式匹配

我想生成一个与房间描述匹配的正则表达式,如下所示:

出口方向可能在不同的位置,但在这种情况下总是相同的数量 (4)。

这不应该匹配

因为它有5 个出口(“进入”除外)。

0 投票
2 回答
450 浏览

python - 如何使用通过函数获得的用户输入来更改全局变量?

我有一个全局变量,需要通过函数生成的用户输入进行更改。

我正在尝试制作一个Zork 风格的文本游戏,并希望input用户在创建角色期间更改角色名称function更改全局变量

我已经能够创建一个来存储字符信息,并且能够在用户可以使用选项时出现的模拟命令提示符上class显示大部分信息。classinput

在角色创建阶段之前,我使用 aglobal variable来定义角色的名称。我使用 ' global' 关键字来改变usercreation() function的 'name' 。variableinput

当提示准备好使用时,它仍然只显示名称00而不是inputcreation() function

我非常新手。任何建议、提示或方向都会受到重视。